你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
黑皮男 提问时间:2015-5-27 15:20 /
谁能帮忙解释一下,我调用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;
}

收藏 评论5 发布时间:2015-5-27 15:20

举报

5个回答
Mandelbrot_Set 回答时间:2015-5-27 15:32:54
*delay -- 改为 (*delay) --

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

黑皮男 回答时间: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时候,再减一,会变成很大的正数。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

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

函数内有判断,不会溢出

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版