找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1758|回复: 4
收起左侧

求一个基于IAR STM8S的US级延时函数

[复制链接]
ID:562798 发表于 2021-3-27 20:24 | 显示全部楼层 |阅读模式
求一个基于 IAR  上面的STM8S 的100US的延时函数!我每次设置的都是很不准,应该说是相当不准!谁有的话麻烦给我提供一个谢谢了!   
回复

使用道具 举报

ID:390416 发表于 2021-3-27 21:02 | 显示全部楼层
真正搞工程项目设计的,压根就不去计算这种参数的。理由如下:
1、假设在同一个硬件上做测试,单片机CPU指令周期是一致的。那么 变量i、K,存放在data跟存放在XDATA,读写速度能一样?精确计算有意义吗?
2、假设都存放在data,延迟1ms只需要char类型的变量即可完成,但是,延迟100ms必须16位变量,那么执行时间还能照着公式去套算?
3、假设上述条件都一样,计算好的延迟时间是1ms并且误差1%,打开中断之后,延迟时间变成了5毫秒了。误差500%了,精确计算有意义吗?
4、假设上述条件不影响延迟时间,那么,编译器呢?谁敢说编译器不同的优化等级不影响delay的延迟时间?
5、还有硬件不同的情况,就需要重新计算了。比如晶振频率不同,CPU内核速度不同,STC8H单片机就比STC15快了很多了比89系列快了十几倍了。

所以,不要去精确的计算delay 延迟了多少时间
回复

使用道具 举报

ID:562798 发表于 2021-3-28 14:20 | 显示全部楼层
人人学会单片机 发表于 2021-3-27 21:02
真正搞工程项目设计的,压根就不去计算这种参数的。理由如下:
1、假设在同一个硬件上做测试,单片机CPU指 ...

多谢!不过我得到的时间误差太大了没法让程序运行起来而已!
回复

使用道具 举报

ID:89515 发表于 2021-3-28 14:45 来自手机 | 显示全部楼层
stm8是三级流水线的核心吧?不过不涉及分支语句应该影响不大。编写一个常规的延时程序然后反汇编,查看内层语句的执行时间+每次循环判断时间+进出函数时间,多次调试就可以提高精度。
回复

使用道具 举报

ID:592807 发表于 2021-3-29 08:31 | 显示全部楼层
donny123800 发表于 2021-3-28 14:20
多谢!不过我得到的时间误差太大了没法让程序运行起来而已!

我也用STM8S,还没加外部晶振那种,使用计时器确实不精确,但是对我有影响吗?我又不做精确定时,原定5s的定时总是6秒多才反应,我把延时参数改小电5.5s也没影响,功能没问题就行了。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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