|
- while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_4))
- {
-
- Phase_time++;
- delay_ms(1);
- if(Phase_time>=15)
- {
- Phase_A_err++; //錯(cuò)誤累加
- Phase_time=0; //清零
- }
- if(Phase_A_err>3)
- {
- Phase_Error_flag=2;//A缺相
- Phase_A_err=0;
- break;
- }
- Phase_Error_flag=0;
- }
復(fù)制代碼
捕獲.JPG (100.96 KB, 下載次數(shù): 77)
下載附件
2021-5-10 08:27 上傳
遇到的問(wèn)題:
PC4的電平是外部輸入的,
我的設(shè)想,while循環(huán)內(nèi),只要PC4的電平還是高電平,就一直在循環(huán)內(nèi)跑,每過(guò)1毫秒,Phase_time這個(gè)標(biāo)志位+1,當(dāng)Phase_A_err>3才會(huì)break退出循環(huán),現(xiàn)在我單步調(diào)試執(zhí)行,發(fā)現(xiàn)if(Phase_A_err>3)這個(gè)條件都不滿足,就直接進(jìn)入到break這行,同時(shí)前兩行Phase_Error_flag=2;//A缺相
Phase_A_err=0;也直接跳過(guò)
其他發(fā)現(xiàn):
當(dāng)我在不直接寫while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_4)),而是先 test_temp=GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_4);
while(test_temp){}
這個(gè)程序又能正確執(zhí)行。
實(shí)在想不通是什么原因,請(qǐng)大家?guī)兔Ψ治龇治觯x謝
|
|