2019 3 / 20计时器 TIM的使用和软定时器的使用

计时器 TIM的使用和软定时器封装

TIM的使用

定时器的本质就是一个递减的计数器,
根据触发条件在计数器的值达到触发条件的时
候,触发事件的发生。
定时器一共有8个TIM1----》TIM8
配置初始化函数void TIM4_Init(u16 per,u16 psc) 中进行配置。一定要同时配置per和 pse才能生效,具体的而计算公式为
以TIM4_Init(4-1,36000-1)为例子
:Tout=(4-1+1)*(36000-1+1)/36,000,000=4/1,000=4ms
每一个TIM定时器对应的分频都不一样
对于配置定时器的流程以下
2019 3 / 20计时器 TIM的使用和软定时器的使用
定时器的中断服务函数
2019 3 / 20计时器 TIM的使用和软定时器的使用

软定时器

由于有可能定时器后执行的动作可能有好几个,因此设置软定时器可以保证好几个动作规则的一个个执行,比较方便
首先是软定时器的结构体:

2019 3 / 20计时器 TIM的使用和软定时器的使用

*void(pHandle)()
这个指针函数值用来绑定相应的动作

count的作用
当某一个结构体已经绑定了相应的pHandle 的时候,就可以变为CLOSE ,可以用来检测结构体数组中是否需要有执行操作的 动作,以及是否pHandle为空 可否存入相应的动过。
curCount的作用
为现在时间 每次执行一次 TIM的操作所有的curCount就加一 每个 curCount ==count 相同的动作将被执行

软定时器的基本封装

定义一个结构体数组2019 3 / 20计时器 TIM的使用和软定时器的使用
将所有的结构体数组都进行相应的初始化
2019 3 / 20计时器 TIM的使用和软定时器的使用
寻找到空的结构体添加入相应的动作pHandle 和执行的时间 count
2019 3 / 20计时器 TIM的使用和软定时器的使用
查找并执行Count 时间与 curCount时间相同的动作,并且将所有的curCount现在时间都+1
2019 3 / 20计时器 TIM的使用和软定时器的使用

遇到问题:本来对与count 与 curCount 两者的作用不是很清晰。

解决办法:在咨询同学们之后得到了答案

心得体会:对于不清楚的问题及时的和同学交流,相互学习,能够提高学习效率。