SysCtlDelay 实现延时
2024-09-06 14:39:59
SysCtlDelay 实际上由 3 条汇编指令实现,一次可以延时 3 个 clock.
例如,初始化系统时钟:
SysCtlClockFreqSet((SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_OSC), 16000000);
那么,可以实现毫秒延时函数为:
void delay_ms(uint32_t ms)
{
SysCtlDelay(ms*16000/3);
}
但是,这个延时函数有个限制,最多只能延时 805 秒多,因为 最多 0xFF FF FF FF * 3 个 clock,秒数更大的话就溢出了。
要实现更多秒数的延时,可以用循环来实现,例如:
void delay_sec(uint32_t s)
{
int i;
for(i=0;i<s;i++)
SysCtlDelay(16000000/3);
}
但是这样有误差,因为 for 循环控制本身也有几条汇编指令,只能用于大致的计时使用。
最新文章
- iOS学习24之UIControl及其子类
- Android四大组件之Activity(活动)及其布局的创建与加载布局
- PostgreSQL Replication之第十章 配置Slony(4)
- 在 SVG 中添加交互性
- LeetCode--判断二叉树是否对称
- 继续Python爬虫
- 国内外主流BI厂商对比
- html 数字不转行问题
- Hibernate注解开发详解
- 深入理解JVM垃圾收集机制,下次面试你准备好了吗
- [Swift]LeetCode692. 前K个高频单词 | Top K Frequent Words
- Kotlin 检查空类型
- VMware虚拟机与Windows文件共享
- CentOS 7 安装配置 MySQL
- 尚硅谷spring_boot课堂笔记
- oracle的start with connect by prior如何使用
- python中的import,reload,以及__import__
- 199. Binary Tree Right Side View (Tree, Stack)
- 20145307陈俊达《网络对抗》Exp6 信息搜集与漏洞扫描
- java 管道流PipedInputStream,PipedInputStream和随机访问文件 RandomAccessFile