黑皮男 发表于 2015-5-27 15:20:07

改变指针变量所指向的地址存储的值

谁能帮忙解释一下,我调用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;
}

Mandelbrot_Set 发表于 2015-5-27 15:32:54

*delay -- 改为 (*delay) --

黑皮男 发表于 2015-5-27 15:40:37

Mandelbrot_Set 发表于 2015-5-27 15:32
*delay -- 改为 (*delay) --

多谢指点,已通过

黑皮男 发表于 2015-5-27 15:52:31

Mandelbrot_Set 发表于 2015-5-27 15:32
*delay -- 改为 (*delay) --
还是有一个问题,单步调试一到if(*delay <=0)这一句在watch窗口中(*delay)的值就变成unavaiable

he129807 发表于 2018-6-17 10:13:32

这里面有个问题,就是你的 LED_Delay_Time 变量是无符号型的。不能用小于0这个比较。
无符号型为0时候,再减一,会变成很大的正数。

黑皮男 发表于 2018-6-19 09:07:30

he129807 发表于 2018-6-17 10:13
这里面有个问题,就是你的 LED_Delay_Time 变量是无符号型的。不能用小于0这个比较。
无符号型为0时候,再 ...

函数内有判断,不会溢出
页: [1]
查看完整版本: 改变指针变量所指向的地址存储的值