历史上的今天
今天是:2024年09月02日(星期一)
2020年09月02日 | STM32F2 GPIO 配置问题
2020-09-02 来源:eefocus
在编写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一直为高。
史海拾趣
|
270平台 + wifi8686(Marvell)图标啥都有为为嘛,总是提示WIFI不可用~ 程序是供应商给的,加进去,修改platform.reg,platform.bib 示波器量了一下,确认了供电问题不大,也有时钟,cmd~ 通过Trace跟踪,我发现初始化成功了,download firmware也成功了。之后系统起来后,也有图标了,默认“关闭” 点一下后,很快就 ...… 查看全部问答> |
|
要设一个调理电路,用到AD8337,但是protel 里却找不到。 我用的是Altium Designer6.9版的。 多谢! … 查看全部问答> |
|
现象:相同的工程,确定添加了Direct3D Mobile和DirectDraw组件;用一个BSP编译MFC运行正常,换个BSP,DirectDraw编译不进去,MFC调用不了DirectDraw,不能解码视频文件; 问题:DirectDraw相关的定义在BSP的哪部分?… 查看全部问答> |
|
新手贴,附件是我刚刚写的一些程序,LPC213X ARM驱动T6963 240*128液晶,有图片,ASCII,汉字混合现实,还做了个小进度条。完全是ARM7_GPIO的应用,希望对新手有点用。… 查看全部问答> |




