完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
Stm32CubeMx基本定时器
基本定时器概念 在stm32f103中,共有八个定时器:TIM1~TIM8。其中TIM6和TIM7是基本定时器 基本定时器相较于其他定时器只有基本的定时功能和驱动数模转换器(Digital to Analog Converter, DAC)的功能,不具备外部通道 简单来说,就是实现一些简单的定时任务的时候使用基本定时器 Stm32CubeMx 配置 我们这里使用定时器驱动一个流水灯定时亮灭。 和上一章类似,我的开发板PE6连接着LED2,这里就配置LED2闪烁。不同的是我们不用HAL_Delay()函数,而是使用定时器来使LED灯闪烁 基本配置 配置LED灯 配置晶振时钟 配置串口 时钟数配置 TIM6定时器配置 设置TIM6定时器 这里重点说一下第4和第5步 这两部分别是配置分频系数和定时器周期的 由上面的时钟数可以看到我们配置的时钟频率是72Mhz,也就是72000000hz。 这个时候我们的分频系数配置为7199(其实就是7200,至于为什么一会我会讲到),也就相当于告诉CPU:将原来7200个频率脉冲看成一个频率脉冲。这样的话,分频后定时器 6 的时钟频率为 72000000/7200=10000hz,也就是它每1/10000秒会来一个脉冲。 然后我们将定时器周期设置为9999(其实就是10000,至于为什么一会我会讲到),这样的话,定时器6就会检测到每过10000个脉冲的话就会触发定时器中断。结合上面定时器每1/10000秒会来一个脉冲就可以得到:每过10000*(1/10000)=1s就会触发一次定时器中断 至于为什么要将分频系数和定时器周期设置为7199和9999而不是7200和10000呢,原因是Stm32的寄存器是从0开始计数的,即0~7199正好是7200个。定时器周期同理 如果觉得上面的解释太枯燥的话,可以记忆下面这个公式: (分频系数/时钟频率)*定时器周期 = 需要的时间 以1s为例:1s = (7199+1)/72000000*(9999+1) 以0.5s为例:0.5s = (7199+1)/72000000*(4999+1) 当然,分频系数、时钟频率、定时器周期 可以根据实际情况设置,不一定仅局限于某个数,比如0.5s也可以这么计算:0.5s = (3599+1)/72000000*(9999+1) 时钟频率是我们在时钟数里面设置的,就是这货~ 设置TIM6定时器中断 将抢占优先级设置为2,响应优先级设置为0 在Stm32中,优先级号越小,优先级越高。当抢占优先级相同时,判断响应优先级 编写代码 编写 TIM6 更新中断服务程序 大功告成 但是如果在某一些不能查阅资料的情况下(比如考试)怎么快速找到这一些函数呢? 这里我提供一个方法,如果不想背下来的话,可以参考下图 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1750 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1608 浏览 1 评论
1049 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
721 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1665 浏览 2 评论
1924浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
709浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
559浏览 3评论
583浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
544浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 10:17 , Processed in 0.908028 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号