各位,我在使用stm32f407zet6这个芯片的时候,想把GPIOC设置为输入端口,检测外部按键,我的程序具体编码是这样的: //对端口初始化 void InitExternalIO(void) { GPIO_InitTypeDef GPIO_InitStructure; /* ´ò¿ªGPIOCµÄʱÖÓ */ RCC_APB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); //ÊäÈë¶Ë¿Ú //PC 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN; //ÊäÈë GPIO_InitStructure.GPIO_OType=GPIO_OType_OD; //¿ªÂ©Êä³ö GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL; // GPIO_InitStructure.GPIO_Speed=GPIO_Speed_25MHz; // GPIO_Init(GPIOC,&GPIO_InitStructure); } 然后在循环里面循环读取C端口的输入状态,再通过串口输出:程序是 OSTimeDly(500); { char buf[15]; InitExternalIO(); sprintf(buf,"GPIOC=%04x\r\n",GPIOC->IDR); DebugPrint(buf); } 在我改变C端口的状态时(示波器观测有变化),但是在串口接收到数据始终是GPIOC=0000,我想知道 哪里没有设置好,或者是由于硬件上问题,望知其下落者告知? |
看你代码唯一让我觉得可能有错的地方就是,你把GPIOC设置成OD输入,只听说过OD输出,是不是这里配置错了?
你说的这个问题,我也改变过:输入上拉或者是输入悬空,都是同样的现象, 我觉得这个配置是比较简单的,你的QQ是多少,还望赐教?
==> RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);