STM32F2 GPIO 配置

在编写GPIO模拟i2c时,下面两个初始化有不同 

第一种方法:

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
    GPIO_Init(GPIOC, &GPIO_InitStructure);

    GPIO_WriteBit(GPIOC, GPIO_Pin_9, Bit_SET);  //zyboy 

第二种方法:

    GPIO_WriteBit(GPIOC, GPIO_Pin_9, Bit_SET);  //zyboy
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
    GPIO_Init(GPIOC, &GPIO_InitStructure); 

通过示波器观察 第一种方法:会出现GPIO瞬间有个低电平,之后变成高电平,第二种方法:一直为高电平 

原因:GPIO上电默认输入模式,GPIO寄存器值为0,高阻悬浮状态,GPIO电平由外围电路决定。

由于i2c总线,GPIO外接上拉电阻,故上电时GPIO表现为高电平。如果程序初始化开始设置GPIO为输出,再设置GPIO为高,由于GPIO寄存器值默认上电是0,故GPIO会是有个瞬间的低电平然后变高。如果事先把GPIO 寄存器设置为1,再设置GPIO为输出,则GPIO一直为高。

粽子糖果 发表于09-06 10:18 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

粽子糖果
粽子糖果(总统)
金币:41631个|学分:51991个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号