打印
[技术讨论]

指针形参

[复制链接]
594|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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

粉丝