改变指针变量所指向的地址存储的值
谁能帮忙解释一下,我调用Time_Auto_Decrement()函数来是LED_Delay_Time变量的值递减,为什么,值却不变/****main.c*****/
int main(void)
{
uint32_t LED_Delay_Time = 500;
HAL_Init();
BSP_LED_Init(LED2);
/* Configure the system clock to 64 MHz */
SystemClock_Config();
while (1)
{
if(Time_Auto_Decrement(&LED_Delay_Time))
{
BSP_LED_Toggle(LED2);
LED_Delay_Time = 500;
}
}
}
/*****time.c****/
uint8_t Time_Auto_Decrement(uint32_t * delay)
{
uint8_t temp;
if(*delay != 0)
{
*delay --;
if(*delay <= 0)
{
temp = 1;
*delay = 0;
}
else
{
temp = 0;
}
}
return temp;
}
*delay -- 改为 (*delay) --
Mandelbrot_Set 发表于 2015-5-27 15:32
*delay -- 改为 (*delay) --
多谢指点,已通过 Mandelbrot_Set 发表于 2015-5-27 15:32
*delay -- 改为 (*delay) --
还是有一个问题,单步调试一到if(*delay <=0)这一句在watch窗口中(*delay)的值就变成unavaiable 这里面有个问题,就是你的 LED_Delay_Time 变量是无符号型的。不能用小于0这个比较。
无符号型为0时候,再减一,会变成很大的正数。 he129807 发表于 2018-6-17 10:13
这里面有个问题,就是你的 LED_Delay_Time 变量是无符号型的。不能用小于0这个比较。
无符号型为0时候,再 ...
函数内有判断,不会溢出
页:
[1]