- while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_4))
- {
-
- Phase_time++;
- delay_ms(1);
- if(Phase_time>=15)
- {
- Phase_A_err++; //错误累加
- Phase_time=0; //清零
- }
- if(Phase_A_err>3)
- {
- Phase_Error_flag=2;//A缺相
- Phase_A_err=0;
- break;
- }
- Phase_Error_flag=0;
- }
复制代码
遇到的问题:
PC4的电平是外部输入的,
我的设想,while循环内,只要PC4的电平还是高电平,就一直在循环内跑,每过1毫秒,Phase_time这个标志位+1,当Phase_A_err>3才会break退出循环,现在我单步调试执行,发现if(Phase_A_err>3)这个条件都不满足,就直接进入到break这行,同时前两行Phase_Error_flag=2;//A缺相
Phase_A_err=0;也直接跳过
其他发现:
当我在不直接写while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_4)),而是先 test_temp=GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_4);
while(test_temp){}
这个程序又能正确执行。
实在想不通是什么原因,请大家帮忙分析分析,谢谢
|