完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
void delay_ms(u16 nms)
{ u32 temp; Systick->LOAD=(u32)nms*fac_ms;//时间加载(SysTick->LOAD为24bit) SysTick->VAL =0x00; //清空计数器 SysTick->CTRL=0x01 ; //开始倒数 do { temp=SysTick->CTRL; } while(temp&0x01&&!(temp&(1<<16)));//等待时间到达 SysTick->CTRL=0x00; //关闭计数器 SysTick->VAL =0X00; //清空计数器 } 其中的do while语句,我没看懂什么情况下 while(temp&0x01&&!(temp&(1<<16)));内部的表达式可以为假,感觉一直都是真的。temp&0x01应该是真,!temp&(1<<16))结果也是真啊 |
|
相关推荐
9个回答
|
|
要为真才能延时呢.为假的时候才退出...
|
|
|
|
是啊 原子哥 我就是没找到假的条件 什么时候退出呢
|
|
|
|
啊 当倒数结束时countflag标志位置1,temp=0x1001吧
temp&0x01=1为真,而!(temp&(1<<16)),当1<<15时,!(temp&(1<<15))为假 之后跳出 是这个意思吗? |
|
|
|
LOAD=0的时候退出.
|
|
|
|
我知道呀 就是LOAD等于0应该退出 只是我没明白在程序中是怎么表达的
do { temp=SysTick->CTRL; } while(temp&0x01&&!(temp&(1<<16)));//等待时间到达 如果temp&0x01&&!(temp&(1<<16))一直是真,不就属于一直循环,不执行下面语句吗?没明白LOAD是怎么和这条语句建立联系的?求指教 |
|
|
|
|
|
|
|
真心是看了好多遍寄存器 还是没懂才问的
|
|
|
|
|
|
|
|
看懂了 不好意思了多谢原子师兄 忘记是32位寄存器了 以为1<<16就变成0了,冷静了一下突然想到了,脑子里还总是有单片机的印象。
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1617 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1543 浏览 1 评论
977 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1595 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
645浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
516浏览 3评论
532浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
505浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 09:42 , Processed in 1.124286 second(s), Total 92, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号