CH573讀取IO口只要放在中斷中讀取就一直出錯

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ā)才會輸出信息

啊嘞,腦子不好用了,中斷中的判斷條件是反的

cheems-meme.jpg


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频