OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2675|回复: 2

STM32 的精确延时方式

[复制链接]

9

主题

108

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1136
金钱
1136
注册时间
2013-7-16
在线时间
80 小时
发表于 2017-8-2 09:26:50 | 显示全部楼层 |阅读模式
1金钱
STM32 和外部芯片通讯, 数据位的传输需要非常精确的时间控制, 一个位20us, 之前想用滴答定时器做延时 20us,发现并不准确。 现在的做法是采用了一个for循环来延时。 如下:
for( j=0;j<108;j++ ); //20us
但是发现了一个问题,就是 我修改其他地方的代码然后编译,这个for循环的延时有时候会不准确。 按道理来说这个语句是一个独立的语句,变量j是一个局部变量,每次执行的结果应该都是一样才对。 为何会出现这种受到其他地方代码影响的问题? 谁遇见过这情况吗?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

108

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1136
金钱
1136
注册时间
2013-7-16
在线时间
80 小时
 楼主| 发表于 2017-8-2 11:41:01 | 显示全部楼层
yklstudent 发表于 2017-8-2 10:29
精确延时就用定时器来做

试过,但是不够准, 有1~2us误差。 这就导致传输出错。
回复

使用道具 举报

43

主题

481

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1352
金钱
1352
注册时间
2014-12-24
在线时间
321 小时
发表于 2017-8-2 12:14:34 | 显示全部楼层
1us的误差都不能允许,那你这个单片机就干不了别的事情了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-20 04:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表