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"); // }
只要进中断就一直输出限位信息,放大循环中就只有触发才会输出信息
热门产品 :
CH390:以太网控制器芯片