原子哥的delayus定时误差

2019-07-20 19:01发布

这几天在做实验时发现,原子哥的代码delayus()有误差代码写的是delayus(350),实际测试是327us,这部分偏差还挺大,原因是什么呢?

QQ截图20161104182405.png

因为在做射频,需要us级别延时,不能用用定时器中断频繁打算,还有什么好的方法么?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
canghaiwuhen
1楼-- · 2019-07-21 00:18
问题找到了~~原子哥的代码没问题,又一次被STM32官方坑了~~用的最新的STM32官方库,system_stm32f4xx.c文件中,对STM32F4xx的PLL_N系数设置有误,导致系统时钟错误,将系数从360修正为336就可以了~~
说明里都说了是336,最后定义时候居然还是定义成360~~唉

1.png

2.png

3.png





shuaigew88
2楼-- · 2019-07-21 05:49
 精彩回答 2  元偷偷看……
canghaiwuhen
3楼-- · 2019-07-21 09:05
shuaigew88 发表于 2016-11-4 18:37
可以读取定时计数器的值来做延时。

原子哥的代码 为什么会有这么大误差呢?
canghaiwuhen
4楼-- · 2019-07-21 14:13
可能是我用的板子有问题,用DWT或者用定时器,全部都有这样的偏差 明天换个板子试试看~~
shuaigew88
5楼-- · 2019-07-21 17:14
 精彩回答 2  元偷偷看……
yyx112358
6楼-- · 2019-07-21 22:37
按理说就算有误差也该是偏长吧?感觉是时钟的问题,加上一个校准系数应该可以

一周热门 更多>