今天晚上在公司值班,生产运行稳定,没什么事情需要处理,利用这个时间继续学习STM32。有志同道合的小伙伴也继续加油吧!
今天学习的是通用定时器及其中断,首先是内部时钟的选择,定时器的时钟Tclk是由APB1时钟乘以1或2决定的,至于是1还是2,要看APB1的分频系数(AHB/APB1),如果为1,则乘以1,否则乘以2。接着就可以根据我们想设定的时间Tout,去配置ARR跟PSC,这两个数是存在16位的寄存器,所以他们的范围为(0-65535),在这个范围内任意取值,满足公式即可。如果我么要配置500ms,可将ARR配置为2499,PSC配置为14399。也就是定时器计数的一个周期为500ms。(ARR为自动重装载值,PSC为Tclk的预分频系数)
![befe81f5be58ed2e23d63dcca50d21ed.png](https://i-blog.csdnimg.cn/blog_migrate/0d6809d128098937c2f85814f046e8fd.jpeg)
![242aa08556333176f5972b41082c3544.png](https://i-blog.csdnimg.cn/blog_migrate/b8c573a8e740817114705ff43a02d2cd.jpeg)
![7fc85c0d7c20037d6c142759d159bf33.png](https://i-blog.csdnimg.cn/blog_migrate/7a4c0b201352380edfd8d6109cb0817a.png)
根据步骤去写程序就很简单了。
![2f8d29d9c0e0b72bd49ec66386c1ab17.png](https://i-blog.csdnimg.cn/blog_migrate/405219cdc7329e2279f235e939784de3.jpeg)
![459dc55f6ceb673f90d946d474727c86.png](https://i-blog.csdnimg.cn/blog_migrate/38ce938aa3c2bc6e2d09984ace6dbb52.jpeg)
![c3f794010655b062a25787b86f4e93f3.png](https://i-blog.csdnimg.cn/blog_migrate/41ec0fa51ff8b145fd00a47051d1e295.png)
![e0ec1fa7ed3f0826622fd33f78b34c02.png](https://i-blog.csdnimg.cn/blog_migrate/0b16251738e2a006e077dcb4dd0061e7.jpeg)
实现功能:通过定时器的中断控制一个绿灯翻转,时间为500ms,主函数一个红灯以100ms翻转,从实验视频中可以看出,红灯的闪烁频率比较快。
知乎视频www.zhihu.com