完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
/*
STM32F103RCT6 定时器3的输出比较模式 使得LED闪烁 */ #include"stm32f10x.h" #include #define CCR1_Val 100 GPIO_Configuration() //GPIO的设置 { GPIO_InitTypeDef GPIO_InitStructure; //定义结构体 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //选中第10引脚 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置输出速率为50MHz GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP; //设置输出方式为推挽输出 GPIO_Init(GPIOA, &GPIO_InitStructure); //取GPIO为GPIOC GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //选中第10引脚 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置输出速率为50MHz GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP; //设置输出方式为推挽输出 GPIO_Init(GPIOD, &GPIO_InitStructure); } RCC_Configuration() //系统时钟设置 { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE); //GPIOC和复用功能的时钟使能 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); //usart3串口时钟使能 } TIM3_Configuration() { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; TIM_TimeBaseStructure.TIM_Period =65535; //设置自动重装载值 当计数超过65535时重新计数 当设置小于65535时 //便不会重新开始计数 也就不会进入中断 TIM_TimeBaseStructure.TIM_Prescaler =35999; //分频 72M/36000=2k HZ TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //时钟不分割 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数 TIM_TimeBaseInit(TIM3, & TIM_TimeBaseStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing; TIM_OCInitStructure.TIM_OutputState =TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = CCR1_Val ; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC1Init(TIM3, & TIM_OCInitStructure); TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable); //TIM_ARRPreloadConfig(TIM3, ENABLE); TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Disable) ; //禁止TIM——CCR1寄存器预装载使能 TIM_Cmd(TIM3, ENABLE); TIM_ITConfig(TIM3,TIM_IT_CC1,ENABLE); //捕获/比较中断使能 } NVIC_Configuration() //NVIC设置 { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //选择抢占优先级和响应优先级 NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //外部中断通道一 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //主优先级设置 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //从优先级设置 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; // 通道使能 NVIC_Init(&NVIC_InitStructure); } int main(void) { RCC_Configuration(); GPIO_Configuration(); TIM3_Configuration() ; NVIC_Configuration(); while(1); } void TIM3_IRQHandler(void) { uint16_t reloadvalue; if(TIM_GetITStatus(TIM3,TIM_IT_CC1)!=RESET) { TIM_ClearITPendingBit(TIM3,TIM_IT_CC1); GPIO_WriteBit(GPIOA,GPIO_Pin_8,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_8))); //PA8电平翻转 GPIOD->ODR^=GPIO_Pin_2; //PD2电平翻转 两种翻转方法 建议使用第一种 reloadvalue=TIM_GetCapture1(TIM3); TIM_SetCompare1(TIM3,reloadvalue+CCR1_Val ); //比较值加100 也就是100/2000*1s 触发一次中断 } } |
|
相关推荐
|
|
1049 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1017 浏览 2 评论
2123 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1219 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1639 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 16:36 , Processed in 0.497090 second(s), Total 66, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号