if(SysTick_Config(SystemCoreClock/1000)) while(1);

2019-08-14 19:01发布

if(SysTick_Config(SystemCoreClock/1000))                   
while(1);
是什么意思,while(1)不是进入死循环了吗
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
youlikesoilove
2019-08-16 07:16
本帖最后由 youlikesoilove 于 2017-8-4 16:32 编辑

这个原子哥应该解释过了:

因为SysTick_Config();函数中
执行位操作的两个变量STK_LOAD和STK_VAL都是二十四位的。所以你要调用该函数所使用的参数不能超过2的24次方、
所以为了防止出现莫名其妙的错误,传入SysTick_Cofig();函数的值应当小于2的24次方。
SysTick_Config();函数内部集成了对输入参数检查的函数,

if (ticks>SysTick_LOAD_RELOAD_Msk)
return (1);

就是说,如果你输入SysTick_Config();的参数超出2的24次方会立即返回1

if(SysTick_Config(SystemCoreClock / 1000))
while(1);

SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;//关闭系统滴答定时器;

so、原子哥利用SysTick_Config();的返回值判断你是否配置对了,
如果配置错了,你的程序会立即进入死循环。
如果判断对了、
执行下一步。就是关闭滴答定时器。

我是初学者。如果哪点有问题。希望多多包涵。

一周热门 更多>