CW32L083 systick如何实现微秒级延时

[复制链接]
5823|8
 楼主| lulugl 发表于 2023-6-11 07:26 | 显示全部楼层 |阅读模式
准备驱动18B20单总线,想使用systick实现微秒级的定时器,哪位大佬可以指点一下吗,如果有代码更加好,谢谢了!
zchong 发表于 2023-6-11 08:19 | 显示全部楼层
读定时器的计时值,判断时间
E=MC2U 发表于 2023-6-11 09:23 | 显示全部楼层
有那么多timer可以定时us级别,为什么使用tick timer呢? 很多芯片 tick timer(节拍计数器)被固定在1ms/10ms 固定周期中断。
天意无罪 发表于 2023-6-11 16:00 | 显示全部楼层
systick是系统滴答定时器,固定1ms,想实现us级别的计时,用定时器就可以了。
walton1226 发表于 2023-6-12 10:32 | 显示全部楼层
void delay_us(u32 nus)//;nus<1800
{
u32 temp;
SysTick->LOAD = 9*nus;//72M
SysTick->VAL=0X00;//清空计数器
SysTick->CTRL=0X01;//使能
do
{
  temp=SysTick->CTRL;//读取当前倒计数值
}while((temp&0x01)&&(!(temp&(1<<16))));//等待时间到达
  SysTick->CTRL=0x00; //关闭计数器
  SysTick->VAL =0X00; //清空计数器
}

评论

是的,systick本身就是个简单的滴答定时器,如果设置小一点就能达到us级别。如果你不用作操作系统的话。 只是这个定时器最方便操作系统作滴答时钟用最方便。操作系统的时钟一般不要那么快。  发表于 2023-6-25 09:48
专注于嵌入式 发表于 2023-6-12 15:32 | 显示全部楼层
天意无罪 发表于 2023-6-11 16:00
systick是系统滴答定时器,固定1ms,想实现us级别的计时,用定时器就可以了。
...

可以,自己重新给systick进行初始化,关掉中断,用查询模式。可以实现us定时。
天意无罪 发表于 2023-6-12 22:21 | 显示全部楼层
专注于嵌入式 发表于 2023-6-12 15:32
可以,自己重新给systick进行初始化,关掉中断,用查询模式。可以实现us定时。 ...

是可以重新配置滴答定时器,这样搞有什么意义呢?为什么不用标准定时器,保持滴答时钟的专有性呢。
专注于嵌入式 发表于 2023-6-13 09:03 | 显示全部楼层
天意无罪 发表于 2023-6-12 22:21
是可以重新配置滴答定时器,这样搞有什么意义呢?为什么不用标准定时器,保持滴答时钟的专有性呢。 ...

有时候其他定时器可以用于其他地方,比如PWM,捕获比较什么的。但是systick功能单一,优先使用是最好的。毕竟大部分单片机是不是上操作系统的,systcik空闲下来了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

188

主题

845

帖子

12

粉丝
快速回复 在线客服 返回列表 返回顶部