完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
概述
STM32的常见的定时器资源: 系统嘀嗒定时器SysTick、看门狗定时器WatchDog、实时时钟RTC、基本定时器、通用定时器、高级定时器。 系统嘀嗒定时器SysTick :这是一个集成在Cortex M3内核当中的定时器,它并不属于芯片厂商的外设,也就是说使用ARM内核的不同厂商,都拥有基本结构相同的系统定时器。主要目的是给RTOS提供时钟节拍做时间基准。 基本定时器:TIM6、TIM7。 通用定时器:TIM2、TIM3、TIM4、TIM5。在基本定时器的基础上,实现输出比较、输入捕获、PWM生成、单脉冲模式输出等功能。这类定时器最具代表性,使用也最广泛。 高级定时器:TIM1、TIM8。 STM32通用定时器的基本组成: STM32的通用定时器,是一个通过可编程预分频器(Prescaler)驱动的16位自动重装主计数器(Counter Period)构成。可以对内部时钟或触发源以及外部时钟或触发源进行计数。 首先,定时器时钟信号送入16位可编程预分配器(Prescaler),该预分配器系数为0~65535之间的任意数值。预分配器溢出后,会向16位的主计数器(Counter Period)发出一个脉冲信号。 预分频器,本质上是一个加法计数器,预分频系数实际上就是加计数的溢出值。 定时器发生中断时间的计算方法: 定时时间 = (可编程预分频器+1 ) X (主计数器+1) X 1/ 定时器时钟频率 例:假设时钟信号为1KHz,可编程预分频器系数为9,主计数器系数为9。此时定时器为0.1秒 使用cubeMX设置定时器 时钟树种系统时钟是72MHz 别忘了在NVIC Settings中允许定时器中断 这两部分别是配置分频系数和定时器周期的 由上面的时钟数可以看到我们配置的时钟频率是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) 生成代码,编写代码 在main函数中启动定时器 HAL_TIM_Base_Start_IT(&htim2); //启动定时器2 编写 TIM2 更新中断服务程序 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){ if(htim->Instance == TIM2){ HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13); }} 编译下载到芯片测试查看结果 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1135 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1160 浏览 1 评论
589 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
439 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1055 浏览 2 评论
1629浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
295浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
299浏览 3评论
292浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
266浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-23 14:27 , Processed in 0.968701 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191