1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用核内部timer定时器实现延时函数,为什么系统时钟要除以4?
复制 void delay_1ms(uint32_t count) { uint64_t start_mtime, delta_mtime; uint64_t tmp = get_timer_value(); do{ start_mtime = get_timer_value(); }while(start_mtime == tmp); do{ delta_mtime = get_timer_value() - start_mtime; }while(delta_mtime <(SystemCoreClock/4000 * count)); |
|
相关推荐
1个回答
|
|
在使用GD32VF103的核内部timer定时器实现延时函数时,系统时钟需要除以4的原因主要与定时器的工作原理和时钟频率有关。以下是详细的解释:
1. **定时器工作原理**: 定时器通常使用一个计数器来实现延时。当计数器达到预设的值时,定时器会产生一个中断或者事件,表示延时已经完成。 2. **时钟频率**: GD32VF103的系统时钟频率(System Clock Frequency)是定时器计数的基础。如果系统时钟频率很高,那么定时器的计数速度也会很快,这意味着在相同的时间内,定时器可以计数更多次。 3. **定时器时钟源**: 在许多微控制器中,定时器的时钟源可能不是直接使用系统时钟,而是系统时钟经过分频(Divider)后的值。分频可以降低定时器的计数速度,使得定时器的计数更加稳定和精确。 4. **为什么除以4**: 在GD32VF103中,如果定时器的时钟源是系统时钟经过分频后的值,那么分频系数可能是4。这意味着定时器的计数频率是系统时钟频率的1/4。例如,如果系统时钟是100MHz,那么定时器的计数频率可能是25MHz。 5. **延时函数实现**: 在实现延时函数时,你需要计算定时器计数器需要计数多少次才能达到所需的延时。如果定时器的计数频率是系统时钟的1/4,那么在计算延时时,你需要将系统时钟频率除以4来得到定时器的实际计数频率。 6. **代码分析**: 在你的代码中,`get_timer_value()`函数可能是用来获取定时器当前的计数值。`start_mtime`和`delta_mtime`用于记录延时开始和结束时的计数值,从而计算出延时的持续时间。 7. **代码中的逻辑**: - 首先,通过`get_timer_value()`获取一个初始值`tmp`。 - 然后,通过循环确保`start_mtime`不等于`tmp`,这样可以避免在延时开始时就达到延时条件。 - 在延时循环中,计算`delta_mtime`,即当前计数值与`start_mtime`的差值,以此来判断是否达到了延时时间。 8. **总结**: 系统时钟除以4是为了适应定时器的计数频率,确保延时函数能够准确地实现预期的延时效果。 如果你需要更具体的帮助,例如如何设置定时器的分频系数或者如何配置定时器,请提供更多的上下文信息,例如你的硬件配置和具体的代码片段。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1763 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1617 浏览 1 评论
1059 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
723 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1670 浏览 2 评论
1933浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
725浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
565浏览 3评论
592浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
550浏览 3评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 06:20 , Processed in 0.764426 second(s), Total 49, Slave 43 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号