微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > systick时钟节拍和精确延时问题

systick时钟节拍和精确延时问题

时间:10-02 整理:3721RD 点击:
      我需要用systick将时钟节拍设置成1ms,以便以1ms/次的速率产生一个周期性中断,同时我还需要1us以及1ms的精确延时,这个有没有办法实现啊,延时主要用在dht11传感器读取数据,只要能精确到微秒或是能够读出dht11的数据,即使不太精确也行,求大神指点解决思路

最简单的方法就是用延时函数。DHT11那几十us延时。

系统时钟定时器的周期与驱动的时钟频率和Reload值相关
首先,我们称Systick为“系统时钟定时器”。
系统时钟定时器的周期与驱动的时钟频率和Reload值相关。
驱动系统时钟定时器的时钟源有两个:HCLK或(HCLK/8),通过调用SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK)或SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8)选择。
Reload值表示对时钟源脉冲计数多少次为一个系统时钟周期,如当选择时钟源为(HCLK/8)时,如果HCLK=72MHz,则Reload值为9000时系统时钟周期为1ms。通过调用SysTick_SetReload()设置Reload值。
再举个例子:选择时钟源为(HCLK/8),如果HCLK=36MHz,Reload值为9000时系统时钟周期为2ms,Reload值为4500时系统时钟周期为1ms,Reload值为90000时系统时钟周期为20ms。

你的要求都可以实现;
设置变量,用于Systick计数;设置1uS和1mS时间到标志;
在Systick中断例程中将变量增量,达到需要的计数值后设置时间到标志;
常规例程中检测时间到标志,标志有效时复位标志,然后做相应的定时工作。

知道了,感谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top