ZHCUBZ5A September 2021 – April 2024
在按下按鈕時,讀取按鈕以使電機運行、停止或只是更改全局變量的狀態(tài)通常很有用。例如,用戶可將 GPIO23 連接到用以啟動/停止電機的按鈕。為此,請在工程構(gòu)建屬性中啟用預(yù)定義符號 CMD_SWITCH_EN,如圖 3-19 所示。GPIO 狀態(tài)將分配給 motorVars_M1.flagEnableRunAndIdentify。詳細步驟如下。
#define MTR1_CMD_SWITCH_GPIO 23
// GPIO23->Command Switch Button
GPIO_setPinConfig(GPIO_23_GPIO23);
GPIO_setDirectionMode(23, GPIO_DIR_MODE_IN);
GPIO_setPadConfig(23, GPIO_PIN_TYPE_PULLUP);
GPIO_setQualificationMode(23, GPIO_QUAL_3SAMPLE);
GPIO_setQualificationPeriod(23, 4);
if(GPIO_readPin(MTR1_CMD_SWITCH_GPIO) == 0)
{
objMtr->cmdSwtich.lowTimeCnt++;
if(objMtr->cmdSwtich.lowTimeCnt > objMtr->cmdSwtich.delayTimeSet)
{
objMtr->cmdSwtich.flagCmdRun = true;
}
if(objMtr->cmdSwtich.highTimeCnt > 0)
{
objMtr->cmdSwtich.highTimeCnt--;
}
}
else
{
objMtr->cmdSwtich.highTimeCnt++;
if(objMtr->cmdSwtich.highTimeCnt > objMtr->cmdSwtich.delayTimeSet)
{
objMtr->cmdSwtich.flagCmdRun = false;
}
if(objMtr->cmdSwtich.lowTimeCnt > 0)
{
objMtr->cmdSwtich.lowTimeCnt--;
}
}
if((objMtr->cmdSwtich.flagEnablCmd == true) && (objMtr->faultMtrUse.all == 0))
{
objMtr->flagEnableRunAndIdentify = objMtr->cmdSwtich.flagCmdRun;
}