历史上的今天
返回首页

历史上的今天

今天是:2025年06月15日(星期日)

2018年06月15日 | STM32F4——GPIO基本应用及复用

2018-06-15 来源:eefocus

一、IO基本结构:

    针对STM32F407有7组IO,分别为GPIOA~GPIOG,每组IO有16个IO口,则有112个IO口。其中IO口的基本结构如下:

 

二、工作方式:

    STM32F4工作模式有8种,其中4中输入模式,4种输出模式,分别为:输入浮空、输入上拉、输入下拉、模拟模式、开漏输出、开漏复用输出、推挽输出、推挽复用输出。


    1、输入模式:

        在输入浮空模式下,电路既不上拉也不下拉,通过施密特触发器送到输入数据寄存器在送入到CPU。输入上拉和下拉模式分别是在电路中经过上拉和下拉后通过施密特触发器送入的CPU,模拟模式下,施密特触发器关闭后信号直接通过模拟通道至片上外设。

    2、输出模式:

        开漏输出模式下,CPU发送输入直接或间接的控制输出数据寄存器,通过输出控制电路,当信号为1时,N—MOS管是关闭的,所以IO电平就是受上下拉电路的控制,当信号为0时,N—MOS管导通输出就是下拉低电平;推挽输出模式下,信号为1时,P-MOS管导通,N-MOS管截止,输出就是上拉高电平,当信号为0时,P-MOS管截止,N-MOS管导通,输出就是下拉低电平;对于开漏复用和推挽复用模式与开漏和推挽的不同之处就是在于信号的开源不同,开漏复用和推挽复用的信号来源是片上的外设模块。


三、相关寄存器

    每一个通用的IO端口都包括4个32位的配置寄存器(GPIOx_MODER、GPIOx_OTYPER、PIOx_OSPEEDR和GPIOx_PUPDR),2个32位的数据寄存器(GPIOx_IDR和GPIOx_ODR),1个32位置位/复位寄存器(GPIOx_BSRR),1个32位锁定寄存器(GPIOx_LCKR)和2个32位复用功能选择寄存器(GPIOx_AFRL)。下面对其进行介绍。

    1、工作模式配置:1、端口模式(GPIOx_MODER):用来配置端口的模式为输入、输出、复用和模拟模式。2、端口类型(GPIOx_OTYPER):用来配置寄存器的模式为输出推挽还是输出开漏。3、端口速度(PIOx_OSPEEDR):用来配置端口的信息传输速率。4、端口上下拉(GPIOx_PUPDR):用来配置端口的无上下拉、上拉、下拉和保留模式。

    2、电平配置:1、输入数据(GPIOx_IDR):用到其低16位,分别对应该组IO口的一个电平状态。2、输出数据(GPIOx_ODR):与输入数据寄存器相似的功能。3、置位和复位(GPIOx_BSRR):与前两个不同的是置位和复位寄存器用到了32位,低16为设置为1时,用于置1相应位,高16位设置为1时,用于置0相应位,而低16位和高16位设置为0时不影响原值。

    3、复用功能配置:下面做相应说明。


IO复用

一、复用背景:

    由于考虑到IO口的有限,为了节省IO资源,同时为了更好的协调IO之间的工作,所以有必要在适当的时候给IO口赋予不同的功能,一个IO口在不同的时候可以承担不同的工作,这就是IO的复用功能。

二、复用原理:

    每一个IO口都会接有一个选择器,这个选择器经过相应寄存器(GPIOx_AFRH和GPIOx_AFRL)的配置之后就可以做不同的功能的应用,这个寄存器就是GPIOx_AFRH和GPIOx_AFRL。

三、寄存器配置:

    每一组IO口都有一个AFRL和一个AFRH寄存器,他们都是32位的寄存器,其中每4位配置一个IO口的功能,则对应的GPIOx_AFRL就用来配置第0-7个IO口,GPIOx_AFRH就用来配置第8-15个IO口。每4位配置一个IO口,则4位数据的相关取值就会有对应的相应功能。如此一来就做好了相关配置。


综述:

    这些相关的配置过程会用到相应的函数和相应变量,熟练使用相关的函数,同时对函数的功能了解后才会应用的更加得心应手,同时也可以写自己的一些相关函数来进行操作,当然也可以直接操作相关的寄存器。


推荐阅读

史海拾趣

Cogent_Computer_Systems公司的发展小趣事

Cogent_Computer_Systems公司在成立之初,便以其独特的技术创新在电子行业中崭露头角。公司研发团队成功开发出一款高性能的计算机芯片,该芯片在运算速度和能效比方面均达到了行业领先水平。这一技术突破迅速吸引了众多客户的关注,Cogent_Computer_Systems公司也因此获得了大量的订单。随着市场需求的不断增长,公司逐渐扩大生产规模,优化供应链管理,实现了业务的快速扩张。

FINISAR公司的发展小趣事

2018年,FINISAR被II-VI Incorporated(II-VI公司)收购。II-VI是一家同样位于美国的光电子元件和材料制造商,专注于提供各种光学产品和解决方案。这次收购对FINISAR而言是一次重要的发展机遇。通过整合两家公司的资源和技术优势,FINISAR能够进一步扩大在光通信市场的业务规模,提升技术实力和产品组合。同时,这也为FINISAR带来了更广阔的发展空间和更多的市场机会。

以上五个故事展示了FINISAR公司在电子行业中从创立到发展壮大的历程以及所取得的成就和面临的挑战。这些故事不仅反映了FINISAR在技术创新、全球化布局、知识产权保护以及企业发展战略等方面的努力和成果,也展现了公司在光通信行业中的重要地位和影响力。

General Semiconductor ( Vishay )公司的发展小趣事

Vishay一直致力于技术创新和产品升级。在2001年,公司收购了全球二极管和整流器领先制造商General Semiconductor,这一收购极大地增强了Vishay在二极管和整流器领域的实力。同时,Vishay还通过收购RFWaves公司,涉足无线领域,为公司带来了新的增长动力。此外,Vishay还在全球范围内布局制造基地和销售办事处,确保能够为客户提供优质的产品和服务。

固得沃克(GOODWORK)公司的发展小趣事

为了进一步提升品牌影响力和市场占有率,固得沃克积极寻求与行业内知名企业的战略合作。例如,公司与锐单商城达成战略合作,共同推动电子元器件的在线销售和服务。这一合作不仅拓宽了公司的销售渠道,还提升了公司的品牌知名度和美誉度。通过不断参与行业交流和合作,固得沃克在电子行业中的影响力日益增强,为公司的长远发展奠定了坚实基础。

DAPAudio公司的发展小趣事

DAPAudio公司自成立以来,一直将技术创新作为公司发展的核心动力。在音频处理领域,DAPAudio率先推出了基于先进算法的数字音频处理器,其独特的音质优化技术迅速赢得了市场的认可。随着技术的不断迭代和更新,DAPAudio的产品逐渐在高端音频市场占据了一席之地。

千志电子(CCO)公司的发展小趣事

随着技术的不断进步和市场的日益成熟,千志电子开始注重电阻产业的深耕。公司不仅专注于电阻的生产,还逐渐向电阻专用设备、原材料等领域延伸。2006年,千志电子成立了深圳市鑫兴志实业有限公司,主要生产电阻相关的生产机器如切割机、焊接机、成型机、涂装机等。同时,千志电子还成立了千志电子科技(湖北)有限公司,生产各类型电阻器、设备及电阻所需原材料如碳棒、线材等。这一战略调整使千志电子形成了从原材料到设备的完整产业链,提高了生产效率和产品质量,进一步巩固了其在电阻行业的领先地位。

问答坊 | AI 解惑

求助求助

紧急求助!! 我是大专的正在弄毕业设计! 但说实话弄的什么也稀里糊涂的! 着急问个东西 我正在弄一个数字电压表的毕业设计!AT89C52单片机ADC0809芯片0~5V 差不多弄完了! 老师说缺少硬件工作过程! 我不知道怎么弄! 哪位大侠会的加我QQ ...…

查看全部问答>

到底做系统集成的方向在哪里?

是精于一方面,比如综合布线, 还是大而全? 请大家指教。…

查看全部问答>

如何在NOR Flash上使用jffs2根文件系统

Hi,guys: 基本配置: CPU:LPC2478 SDRAM:16M NOR Flash:4M kernel:uClinux(2.6.24.2) 开发板提供的根文件系统只有ROMFS,而且是通过uboot通过U盘down到SDRAM上运行的 我已经实现TFTP启动,根文件系统ROMFS,也能挂载NFS文件系统, ...…

查看全部问答>

固定电话机来电检测及其号码分析和排除怎么做程序,谁有原程序呢

我的毕业设计请求你帮我看看 谢谢拉 我都要急疯了 现在的固定电话各式各样,但是功能基本一致。要实现电话来电检测是怎么样一个过程,主要想问再程序中如何实现!是不是用单片机来实现的呢? 结合以下几点缩小了问题的范围,希望NB人士给以程序作 ...…

查看全部问答>

wince 6.0 驱动异常问题

我在wince6.0 下修改按键驱动 [/ BOOL KeyPad::IsrThreadProc(void) {         RETAILMSG (1, (TEXT(\"------------------keypad InterruptInitialize success1\\r\\n\")));     m_hevInterrupt = CreateEvent(NULL, ...…

查看全部问答>

请教大家这个电路中二极管是否能起到隔离的作用

电流源和电压源有两个不同的地。请教大家这个电路中二极管是否能起到隔离的作用,当电流源工作的时候电压不会传入电压源的两端 复件 d.jpg (949.27 KB) 下载次数:1 2010-12-28 10:34 分享本文到: ...…

查看全部问答>

EK-stm32SD卡调试

1、hw_config.c文件:修改USB时钟相关配置、USB使能脚输出模式(参考Joystick);2、usb_desc.c文件:修改PID为0x5721(或其它,0x5720似乎是内置ST-LINK的,待验证);3、msd.c文件:在u8 MSD_GoIdleState(void)函数中,MSD_CS_LOW();后 ...…

查看全部问答>

矩阵键盘检测

本人是新手,有些基本的问题弄不清楚。还有本人在做矩阵键盘检测时,不知为什么,按键按了数码管只显示0,没有反应。请各位大虾指点下。谢谢哈#include <REGX51.H>#define uint unsigned int#define uchar unsigned charsbit Key_ce=P1^3;sbi ...…

查看全部问答>