完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在使用一个定时器作为 1ms 时基,它是在点击 main 之后立即配置的,所以非常早。我使用这个时基在我的驱动程序中实现超时功能,因为我更喜欢在等待某些事情完成时不只是使用 while 循环。
我注意到的是,时基在启动过程的早期就偏离了,但稍后就会出现。例如,我使用相同的时基以 1Hz 的间隔闪烁 LED,它确实按预期运行。然而,一些较早的延迟几乎只是飞过。恰当的例子:配置时基后,我有 10 秒(10'000 毫秒)的延迟,当我运行代码时,我在启动过程中看不到任何可察觉的延迟。如果我在延迟之前设置一个断点,然后手动跨过延迟功能,它会延迟 10 秒.... 此外,当单步执行代码并注意时基计数器的 CNT 寄存器时,我发现从一条指令单步执行到下一条指令时会出现巨大的增加。经过一些指令后,它似乎“慢下来”并且只在一段时间后增加。由于定时器被预先调整为有 1ms 滴答声(HSI 在 16MHz 下运行),我希望 CNT 寄存器在单步执行代码时增加得非常慢。 根据我的观察,时钟似乎在启动后快得多,然后稳定下来。这很奇怪,我希望它是相反的。请注意,我使用的是 HSI,根本没有修改时钟结构。 真的在黑暗中拍摄,这是一个奇怪的问题......我已经对 RCC CR 寄存器中的 HSIRDY 位进行了检查,以确保在我继续之前 HSI 已准备就绪,但这根本没有帮助. 我还应该提到我没有使用 HAL。 |
|
相关推荐
1个回答
|
|
更新事件后会考虑定时器的预分频器,因此对于仅用于计数滴答的自由运行计数器(即它一直运行然后翻转),它将采用完整的定时器计数(在我的case 65536 - 16 位定时器)使预分频器生效。使用 EGR 寄存器中的 UG 位手动设置更新事件是解决此问题并修复问题的方法。
|
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2574 浏览 1 评论
3192 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1761 浏览 1 评论
3587 浏览 6 评论
5965 浏览 21 评论
922浏览 4评论
1296浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
561浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1284浏览 3评论
1336浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-4 21:12 , Processed in 1.210071 second(s), Total 76, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号