关于stm32f407的通用io设置,求助
各位,我在使用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;
InitExternalIO();
sprintf(buf,"GPIOC=%04x\r\n",GPIOC->IDR);
DebugPrint(buf);
}
在我改变C端口的状态时(示波器观测有变化),但是在串口接收到数据始终是GPIOC=0000,我想知道 哪里没有设置好,或者是由于硬件上问题,望知其下落者告知? 我跟你用的库不一样,不过我把GPIO随便设置成输入甚至是输出都可以读到。
看你代码唯一让我觉得可能有错的地方就是,你把GPIOC设置成OD输入,只听说过OD输出,是不是这里配置错了? 本帖最后由 lwfchat 于 2016-3-10 14:44 编辑
你说的这个问题,我也改变过:输入上拉或者是输入悬空,都是同样的现象, 我觉得这个配置是比较简单的,你的QQ是多少,还望赐教? 但是奇怪的是,我在使用PB5,PB6,PB7模拟读写外部E2PROM是正确的,但是端口C D E F,读取不到状态变化,我擦 输入的话不用配置speed和otype 是的不用配置,但是配置了也不影响,在调用端口初始化函数时,那部分没执行的。我关心的是状态为何读取不到。 :)没人帮我了,我晕 时钟:$ RCC_APB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
==>RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); 楼上的兄弟, 都是我粗心啊,太感谢了,:lol:handshake
页:
[1]