stm32f407的通用io设置,串口接收到数据始终是GPIOC=0000

2019-07-14 14:04发布

各位,我在使用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 ",GPIOC->IDR);
        DebugPrint(buf);
    }

在我改变C端口的状态时(示波器观测有变化),但是在串口接收到数据始终是GPIOC=0000,我想知道 哪里没有设置好,或者是由于硬件上问题,望知其下落者告知?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。