CH573讀取IO口只要放在中斷中讀取就一直出錯,始終是錯誤的電平信號,但是只要放在while(1)中讀取就完整正確,實在不知道是什么情況
#define?PUL_IO_INIT()???GPIOB_ModeCfg(GPIO_Pin_7,?GPIO_ModeOut_PP_5mA) #define?DIR_IO_INIT()???GPIOB_ModeCfg(GPIO_Pin_4,?GPIO_ModeOut_PP_5mA) #define?PUL_OUT_H()?????GPIOB_SetBits(GPIO_Pin_7) #define?PUL_OUT_L()?????GPIOB_ResetBits(GPIO_Pin_7) #define?DIR_OUT_H()?????GPIOB_SetBits(GPIO_Pin_4) #define?DIR_OUT_L()?????GPIOB_ResetBits(GPIO_Pin_4) #define?STEP_MOTOR_DIR_CCW()????????DIR_OUT_H() #define?STEP_MOTOR_DIR_CW()?????????DIR_OUT_L() #define?STEP_MOTOR_START_TIMER()????R8_TMR0_CTRL_MOD=RB_TMR_COUNT_EN #define?STEP_MOTOR_STOP_TIMER()?????R8_TMR0_CTRL_MOD=0 #define?IN1_IO_INIT()???GPIOB_ModeCfg(GPIO_Pin_12,?GPIO_ModeIN_PU) #define?IN2_IO_INIT()???GPIOB_ModeCfg(GPIO_Pin_13,?GPIO_ModeIN_PU) #define?LIM1_IO_INIT()??GPIOB_ModeCfg(GPIO_Pin_14,?GPIO_ModeIN_PU) #define?LIM2_IO_INIT()??GPIOB_ModeCfg(GPIO_Pin_15,?GPIO_ModeIN_PU) #define?IN1_READ()??????((GPIOB_ReadPortPin(GPIO_Pin_12)?==?0x00)?1:0) #define?IN2_READ()??????((GPIOB_ReadPortPin(GPIO_Pin_13)?==?0x00)?1:0) #define?LIM1_READ()?????((GPIOB_ReadPortPin(GPIO_Pin_14)?==?0x00)?1:0) #define?LIM2_READ()?????((GPIOB_ReadPortPin(GPIO_Pin_15)?==?0x00)?1:0) //while(1)中 ????????????if(LIM1_READ()) ????????????{ ????????????????printf("Lim1\n"); ????????????} ????????????if(LIM2_READ()) ????????????{ ????????????????printf("Lim2\n"); ????????????} ????????????if(IN1_READ()) ????????????{ ????????????????printf("in1\n"); ????????????} ????????????if(IN2_READ()) ????????????{ ????????????????printf("in2\n"); ????????????} //中斷中 //????//起始點限位判斷 //????if(LIM1_READ()) //????{ //????????//解除限制反轉 //????????step_motor_limit?&=?(uint8_t)(~((uint8_t)STEP_MOTOR_LIMIT_CCW)); //????} //????else //????{ //????????//限制反轉 //????????step_motor_limit?|=?(uint8_t)STEP_MOTOR_LIMIT_CCW; //????????printf("lim1"); //????} //????//結束點限位判斷 //????if(LIM2_READ()) //????{ //????????//解除限制正轉 //????????step_motor_limit?&=?(uint8_t)(~((uint8_t)STEP_MOTOR_LIMIT_CW)); //????} //????else //????{ //????????//限制正轉 //????????step_motor_limit?|=?(uint8_t)STEP_MOTOR_LIMIT_CW; //????????printf("lim2"); //????}
只要進中斷就一直輸出限位信息,放大循環(huán)中就只有觸發(fā)才會輸出信息
熱門產品 :
CH32L103: 32位PDUSB低功耗單片機