stm32的systick时钟没法定时到1us

2019-07-14 15:35发布

1/ 100000s是10us,程序可以正常运行
把SystemCoreClock / 100000改为1000000后、也就是1/1000000s就是1us程序就死了,
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
wewxvqer
1楼-- · 2019-07-16 05:09
你的系统一直在进中断,微妙级的延时用软件延时吧,想精确的话用逻辑分析仪慢慢调
bairunwanda168
2楼-- · 2019-07-16 08:33
60user160 发表于 2018-11-30 12:54
肯定能延时到1us啊,要么使用定时器延时,要么使用软件延时,但是软件延时不是很精确。
定时器延时有两种方法,第一种直接设置成1us中断1次,也就是说systick config函数的参数是XMHz/1000000。但是这样频繁的打断CPU不是很合适。
另外在说一个方法,将定时器的时间间隔设计成为1ms的中断。这样你可以编写一个ms的延时。假 ...

谢谢!不过第二种方法具体要怎样实现呢?是设定好后不断查询?
bairunwanda168
3楼-- · 2019-07-16 12:00
wewxvqer 发表于 2018-11-30 13:03
你的系统一直在进中断,微妙级的延时用软件延时吧,想精确的话用逻辑分析仪慢慢调

这是最后的办法、因为这个要根据不同的时钟频率来调整、我的目的是写一个通用的函数,这样方便一点
bairunwanda168
4楼-- · 2019-07-16 17:48
肥肥飞飞 发表于 2018-11-30 12:20
是不是计数溢出了?

应该不会把、10us能正常运行、1us应该不会溢出
LANxs
5楼-- · 2019-07-16 19:05
 精彩回答 2  元偷偷看……
yisen282
6楼-- · 2019-07-16 21:09
用的外部晶振?
延时6us呢?

一周热门 更多>