[技术讨论] 指针形参

[复制链接]
 楼主| a406916285 发表于 2021-5-29 12:29 | 显示全部楼层 |阅读模式
今天弄了一段小程序去测试继电器开关,写了下面的代码,但是将全局变量传进去后,就发现time不能赋值0,又来一位同来了后,就说time只是复制了全局变量,time=0,只是将自身修改了,而全局变量就没有更改。
你得用指针,真是一天天用ST的库,天天用指针,在这小地方折戟沉沙了,代码修改后见再下面。
void TEST_WORKING_MODE(uint16_t time)
{
switch(TEST_STATE)
{
   case 0 ://电机启动计时
             motor_run;
             if(time >= TIME_MOTRO_START)
             {
              time = 0 ;                                                       
              TEST_STATE = 1 ;//进入电机停止计时
             }
             break ;
   case 1 ://电机停止计时
             motor_stop;
             if(time >= TIME_MOTRO_STOP)
             {
              time = 0 ;
              TEST_MOTRO_COUNT++;
             TEST_STATE = 0 ;//进入电机启动计时
             }
             break ;
             default : break ;
}
}



void TEST_WORKING_MODE(uint16_t *time)
{
switch(TEST_STATE)
{
   case 0 ://电机启动计时
             motor_run;
             if(*time >= TIME_MOTRO_START)
             {
              *time = 0 ;                                                       
              TEST_STATE = 1 ;//进入电机停止计时
             }
             break ;
   case 1 ://电机停止计时
             motor_stop;
             if(*time >= TIME_MOTRO_STOP)
             {
              *time = 0 ;
              TEST_MOTRO_COUNT++;
             TEST_STATE = 0 ;//进入电机启动计时
             }
             break ;
             default : break ;
}
}


使用时候要向下面这样
uint16_t gloab_value ;//全局变量
TEST_WORKING_MODE(&gloab_value);//这回直接编辑全局变量了,而不是time复制全局变量,完美解决问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

44

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部