用一个光耦判断电机的位置,用到GPIO的输入,我用while(GO1)来判断的,理论上电机不到光耦位置程序是一直在while里的,但是实际上老是还不到位置就已经跳出while了,断点检测是GO1已经变成低电平了所以跳出去了。我在while里加个断点,单步运行就不出错,一全速运行就跳出去了;后来再while里加了延时好点了,但有时还是出错跳出去了,难道是判断GPIO的输入状态不能太快吗? 求指教.
#define GO1 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13)
配置:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|
RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
判断:
while(GO1)
{
延时;
}
//后面处理程序
|