链接: keysking-18
1.概况
外部时钟模式1的功能是给定时器提供计数的信号,而这三种模式的功能则是控制定时器的工作状态
可以归纳为
2.复位模式
配置
这里不需要降低延时来较精准地查看定时器计数,所以可以不采用中断或DMA这两种非阻塞模式,用阻塞模式即可。
每1ms计数器加1
每5s进行一次自动重装载
打开定时器触发中断
过滤消抖
代码
关于回调函数
先清0中断标志位,再调用我们需要重新定义的中断回调函数。
main.c中重新定义
效果
每当引入一个上升沿计数值就会重新开始计数,并且还会输出“自动重装载:)”
区分复位模式和自动重装载
看一下触发器中断标志位是否为1即可区分(明显绿的对绿的)
HAL库不会把触发器中断标志位清为0,为了防止下次自动重装在寄存器判断时误判为从模式控制器,这里我们要自己置为0
3.门模式
定时器正常计数
定时器暂停计数
在上升沿/下降沿(暂停/继续)这两个时刻,触发器终端标志置为1。但是门模式并不复位计数器,也就不再触发更新中断。所以在更新中断函数中判断触发器中断标志位没有意义,根本不存在这种情况。
改写中断函数,保留发送功能。将判断触发器中断标志位的代码直接写入while中,当作寻常判断代码。
4.触发模式
但是触发模式仅仅能让定时器开始计数,不能让计数器停止。这里我们配合单脉冲模式使用
所谓单脉冲计数就是不再循环计数,计数到重装载后便停止计数。
5.番外
这个函数在初始化MX_TIM2时会将定时器更新中断标志位置为1
之后中断机制启动,NVIC马上就检测到标志位为1,马上就调用了中断的回调函数
这两种方法都是清0标志位,选1一个即可。