OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4480|回复: 2

求大神~~分析解惑等待时间到达语句

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2013-9-26
在线时间
0 小时
发表于 2013-9-29 11:40:25 | 显示全部楼层 |阅读模式
void delay_us(u32 nus)
{
u32 temp;
SysTick->LOAD=nus*fac_us; //时间加载
SysTick->VAL=0x00; //清空计数器
SysTick->CTRL=0x01 ; //开始倒数
do
{
temp=SysTick->CTRL;
}
while(temp&0x01&&!(temp&(1<<16)));//等待时间到达    temp&0x01的作用   0x01和0x0001有区别吗?
SysTick->CTRL=0x00; //关闭计数器
SysTick->VAL =0X00; //清空计数器
}
十鸟在林,不如一鸟在手
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

56

主题

143

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
376
金钱
376
注册时间
2013-4-25
在线时间
0 小时
发表于 2013-9-29 12:57:41 | 显示全部楼层
没有区别,就相当于5和0005一样都是代表一个实在的数,temp&0x01的意思就是取temp的最低位,0x0001也一样
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2013-9-26
在线时间
0 小时
 楼主| 发表于 2013-9-29 14:18:47 | 显示全部楼层
回复【2楼】fk1174:
---------------------------------
谢谢,我又看了下原子哥的资料,看到了这个问题    temp&0x01是用来判断systick是否还处于开启状态,可以防止systick被意外关闭而导致的死循环。 现在明白了~~~
十鸟在林,不如一鸟在手
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-12 07:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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