初级会员

- 积分
- 175
- 金钱
- 175
- 注册时间
- 2012-12-18
- 在线时间
- 29 小时
|
STM32库函数开发指南119页
void delay_us(u32 nus)
{
u32 temp;
SysTick->LOAD=nus*fac_us; //时间加载
SysTick->VAL=0x00; //清空计数器
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //开始倒数
do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));//等待时间到达
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk; //关闭计数器
SysTick->VAL =0X00; //清空计数器
}
开发指南上面介绍 while(temp&0x01&&!(temp&(1<<16))); 中temp&0x01 这一句是用来判断systick
定时器是否还处于开启状态,可以防止systick被意外关闭导致的死循环
我的理解 其实真的systick被意外关闭 就直接退出了吧 那延时就不准确了吧
不知我的理解对吗 望大家探讨赐教
|
|