| 
 
| 今天弄了一段小程序去测试继电器开关,写了下面的代码,但是将全局变量传进去后,就发现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复制全局变量,完美解决问题
 
 | 
 |