STM32定时器从模式———复位模式
在网上找相关的STM32复位模式的配置几乎没有,于是看官方提供的例程,官方的提供的例程没有针对性,眉毛胡子袜子一把抓,而且都是定时器级联,不是很好阅读,于是简单写了个关于定时器复位模式的简单配置例程,仅供大家参考。
应用:这里的定时器复位模式,我把它应用在串口通信判断接收一帧的结束上,也就是说,接受 一帧数据结束的进入中断,否则,只要还有数据在传,就一直复位定时器,不会进入中断。相比于依赖于串口中断再用定时器去计时,这种硬件的判断一帧结束的方式会更可靠。
采用复位模式,所需资源:一个基本/高级定时器,定时器的一个通道,串口。
芯片:stm32f302CBT6
定时器: TIM3 CH1
CH1对应引脚 : PB4
配置完成后 PB4 拿杜邦线 接在 PA10(RX)上
为什么是PB4 :因为我在CubeMX上,勾选了一下,SlaveMode:Reset_Mode, Trigger Sourse:TI1_ED
他就自动帮我选择了 PB4这个引脚,不知道其他CHx是否可以,大家可以试一下,在下面评论告诉我。
这里我是先在CubeMx上选了一下之后再用库函数进行编辑。
下面配置过程:
/***********************使用TIM3_TIM_TS_TI1F_ED边沿触发***************************/
/*TIM3 CH1 PB4 init */
void gpio_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB,ENABLE); /*enable gpioB*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE); /*复用时钟*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_PinAFConfig(GPIOB,GPIO_PinSourse4,GPIO_AF_2);
}
/*TIM3 config*/
void tim3_init