你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于stm32f407的通用io设置,求助

[复制链接]
lwfchat 提问时间:2016-3-10 13:07 /
各位,我在使用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,我想知道 哪里没有设置好,或者是由于硬件上问题,望知其下落者告知?
收藏 评论9 发布时间:2016-3-10 13:07

举报

9个回答
潇潇雨歇pku 回答时间:2016-3-10 14:11:57
我跟你用的库不一样,不过我把GPIO随便设置成输入甚至是输出都可以读到。

看你代码唯一让我觉得可能有错的地方就是,你把GPIOC设置成OD输入,只听说过OD输出,是不是这里配置错了?
lwfchat 回答时间:2016-3-10 14:26:53
本帖最后由 lwfchat 于 2016-3-10 14:44 编辑

你说的这个问题,我也改变过:输入上拉或者是输入悬空,都是同样的现象, 我觉得这个配置是比较简单的,你的QQ是多少,还望赐教?
lwfchat 回答时间:2016-3-10 14:28:18
但是奇怪的是,我在使用PB5,PB6,PB7模拟读写外部E2PROM是正确的,但是端口C D E F,读取不到状态变化,我擦
陈万垒 回答时间:2016-3-10 14:30:16
输入的话  不用配置speed和otype
lwfchat 回答时间:2016-3-10 14:31:05
是的不用配置,但是配置了也不影响,在调用端口初始化函数时,那部分没执行的。我关心的是状态为何读取不到。
lwfchat 回答时间:2016-3-10 14:43:48
没人帮我了,我晕
Mandelbrot_Set 回答时间:2016-3-10 17:50:31
时钟                              
xmshao 回答时间:2016-3-10 23:33:25
RCC_APB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
==>  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
lwfchat 回答时间:2016-3-11 00:07:45
楼上的兄弟, 都是我粗心啊,太感谢了,

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版