- 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;
- }
復制代碼
捕獲.JPG (100.96 KB, 下載次數: 77)
下載附件
2021-5-10 08:27 上傳
遇到的問題:
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){}
這個程序又能正確執行。
實在想不通是什么原因,請大家幫忙分析分析,謝謝
|