历史上的今天
返回首页

历史上的今天

今天是:2025年02月20日(星期四)

正在发生

2021年02月20日 | STM32F4寄存器与IO输入输出学习

2021-02-20 来源:eefocus

IO设置函数

包括两个函数:GPIO_Set和GPIO_AF_Set. GPIO_AF_Set,每次只能设置一个IO口的复用功能。


STM32F4的每组通用I/O端口包括4个32位配置寄存器(MODER,OTYPER,OSPEEDR和PUPDR),2个32位数据寄存器(IDR和ODR),1个32位置位/复位寄存器(BSRR),1个32位锁定寄存器(LCKR)和2个32位复用功能选择寄存器(AFRH和AFRL).


这样,STM32F4每组IO有10个32位寄存器控制,其中常用的有4个配置寄存器+2个数据寄存器+2个复用功能选择寄存器,共8个。


各个寄存器介绍

1.MODER寄存器,该寄存器是GPIO端口模式控制寄存器,用于控制GPIOx(STM32F4最多有9组IO,x=A/B/C/D/E/F/G/H/I)的工作模式。

MODERy[1:0]:端口x配置位(y=0~15)这些位通过软件写入,用于配置I/O方向模式。


00:输入(复位状态)


01: 通用输出模式


10: 复用功能模式


11:模拟模式


该寄存器各位在复位后,一般都是0(个别不是0,比如JTAG占用的几个IO口),也就是在默认状态下是输入状态的。每组IO下有16个IO口,该寄存器共32位,每两个控制一个IO,位31:16 保留,必须保持复位值。


2.OSPEEDR寄存器,该寄存器用于控制GPIOx的输出速度。(输出模式)复位时,寄存器值一般为0.


00: 2MHz(低速)


01: 25MHz(中速)


10: 50MHz(快速)


11: 30pF时为100MHz(高速)(15pF时为80MHz输出(最大速度))


3.PUPDR寄存器,用于控制GPIOx的上拉/下拉。复位后,寄存器值为0.


00: 无上拉/下拉


01: 上拉


10: 下拉


11: 保留


4.ODR寄存器,用于设置某个IO输出低电平(ODRy=0)还是高电平(ODRy=1),该寄存器也仅在输出模式下有效,在输入模式下(MODER[1:0])不起作用.


5.IDR寄存器,用于读取GPIOx的输入,用于读取某个IO的电平,如果对应的位为0,则说明该IO输入的是低电平


6.OTYPER寄存器,在输入模式不起作用,低16位有效。


0: 输出推挽(复位状态)


1: 输出开漏


7.AFRL和AFRH,是用来设置IO引脚复用和映射的,STM32F4每个IO引脚通过一个复用器连接到板载外设,该复用器一次仅允许一个外设的复用功能(AF)连接到IO引脚,AFRL控制0…7这8个IO口,AFRH控制8…15这8个IO口。4个位控制一个IO。


0000: AF0


1111: AF15


8.BSRR寄存器是端口位设置/清除寄存器,BSRR低16位用于设置GPIO口对应位输出高电平,高16位用于设置GPIO口对应位输出低电平.


void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)

{

  /* Check the parameters */

  assert_param(IS_GPIO_PIN(GPIO_Pin));

  assert_param(IS_GPIO_PIN_ACTION(PinState));


  if(PinState != GPIO_PIN_RESET)

  {

    GPIOx->BSRR = GPIO_Pin;

  }

  else

  {

    GPIOx->BSRR = (uint32_t)GPIO_Pin << 16U;

  }

}


STM32F4的IO的8种模式

4种输入模式

1.GPIO_Mode_IN_FLOATING 浮空输入


MCU直接读取I/O电平,I/O电平状态不确定,完全由外部输入决定


2.GPIO_Mode_IPU 上拉输入


IO内部接上拉电阻,此时如果IO口外部没有信号输入或引脚悬空,IO默认为高电平,如果要大电流还是要外部上拉


3.GPIO_Mode_IPD 下拉输入


IO内部接上拉电阻,没有外部信号或引脚悬空,IO默认为低电平


4.GPIO_Mode_AIN 模拟输入


当位于模拟输入配置下,通过数模转换,转换成模拟信号,CPU不能在"输入数据寄存器"上读到有效数据.


4种输出模式


1.GPIO_Mode_OUT_OD 开漏输出


2.GPIO_Mode_AF_OD 复用开漏输出


3.GPIO_Mode_OUT_PP 推挽输出


4.GPIO_Mode_AF_PP 复用推挽输出


开漏输出:可以输出强低电平,高电平得靠外部电阻拉高


推挽输出:可以输出强高低电平.


推荐阅读

史海拾趣

AND Displays公司的发展小趣事

AND Displays公司自成立以来,一直致力于显示技术的研发与创新。在早期阶段,公司团队就针对当时市场上显示面板的缺陷,进行了一系列技术攻关。经过数年的努力,AND Displays成功开发出了一种新型显示技术,该技术在色彩还原、对比度和响应速度等方面均表现出色,迅速获得了市场的认可。此后,公司不断推出创新产品,满足了消费者对高质量显示面板的日益增长的需求,逐渐在电子行业中崭露头角。

Anders DX公司的发展小趣事

随着公司规模的扩大和实力的增强,AND Displays开始实施国际化战略。公司在全球范围内设立了多个研发中心和生产基地,以便更好地满足不同地区客户的需求。同时,公司还加强了与国际同行的交流与合作,共同推动显示技术的创新与发展。通过全球布局和资源整合,AND Displays逐渐成为了全球显示行业的领军企业之一。

以上五个故事从不同角度展示了AND Displays公司在电子行业中的发展历程和成就。这些故事不仅反映了公司的技术实力和市场竞争力,也体现了公司对环保、可持续发展等社会责任的关注和担当。

Aptiv公司的发展小趣事

Aptiv公司在电子行业中以其领先的技术实力著称。早在1995年,公司便成立了自动驾驶研究实验室,开始探索自动驾驶技术的可能性。经过多年的研发与试验,Aptiv在自动驾驶领域取得了显著的突破。2004年,公司首次在内华达州成功测试了自动驾驶汽车,获得了州政府的批准,这标志着Aptiv在自动驾驶技术上迈出了坚实的步伐。此后,Aptiv不断推动自动驾驶技术的商业化进程,为全球汽车行业带来了新的发展机遇。

Anderson Electronics Inc公司的发展小趣事

面对电子行业的快速变革和市场竞争的加剧,Anderson Electronics Inc公司积极进行产业升级和智能制造的转型。公司引进了先进的生产设备和技术,实现了生产过程的自动化和智能化。同时,公司还加大了对研发人员的培养和引进力度,建立了一支高素质的研发团队。通过产业升级和智能制造的转型,公司成功提升了生产效率和产品质量,进一步巩固了市场地位。

Galil Motion Control Inc公司的发展小趣事

Anderson Electronics Inc公司成立于电子行业的初期,创始人凭借对电子技术的深厚造诣和对市场需求的敏锐洞察,成功开发出了一款具有划时代意义的电子产品。这款产品以其卓越的性能和稳定的品质迅速占领了市场,为公司赢得了良好的口碑和丰厚的利润。在创业初期,公司注重技术创新和研发投入,不断推出新产品,逐步在电子行业中崭露头角。

台湾肯尼威(CANNYWELL)公司的发展小趣事

台湾肯尼威公司成立于1986年,其创始人李明(化名)是一位对电子技术充满热情的工程师。在当时的台湾,电子制造业正处于蓬勃发展的阶段。李明看到电源滤波器在电子设备中的重要性,于是决定专注于这一领域的研发和生产。他带领一支小团队,经过无数次的试验和改进,终于成功研发出CW系列单相电源滤波器,为公司的发展奠定了坚实的技术基础。

问答坊 | AI 解惑

中国MCU能不能像手机/多媒体处理器一样崛起?

在单片机市场,除了在低端8位市场可以看到排名第8的凌阳和排名第十的华邦外,鲜见中国芯的影子。 而与此形成强烈对比的是:联发科和展讯主导了中国GSM和TD市场。 即使分外重视中国市场的国际大厂,也不过是在中国建造投产8位单片机市场, ...…

查看全部问答>

中立认识对嵌入式linux的评价!各位欲使用嵌入linux的注意了!

这是我转摘得文章。各位欲使用嵌入linux的注意了!这里的linux是指嵌入式的不要混淆了! 2008-05-09 上周,Green Hills Software(GHS)就嵌入式Linux撰写了一则措辞严厉的观点,下面就是它的开场白:“Embedded Linux是迄今为止最夸大其词的嵌入式 ...…

查看全部问答>

请问7805输出端电压和输入端电压有限制么???

我在网上看到有人说输出端应该小于输入端,是这样么???…

查看全部问答>

*.jic下载失败

Cyclone 3的芯片,在下载*.sof下载成功,但是*.jic总是下载失败,显示错误是Flash Loader IP not loaded on device 1大家有没有碰到过呢?…

查看全部问答>

msp430五系列与一系列的程序方面的 不同

我想问的是他们在时钟设置和定时器设置有什么不同?在msp1611写好的程序能移植到五系列的片子上吗?还有IO口的操作有什么不同…

查看全部问答>

Android系统的优越性(二)

 在上一篇文章中卓跃教育已经为大家介绍了Android智能系统的优 越性。那么接下来卓跃教育继续为大家介绍下面的这几点:         6.多运营商支持         苹果iPhone在美国 ...…

查看全部问答>

verilog 不可综合语句

转自ednchina(1)所有综合工具都支持的结构:always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,not,bufif0,bufif1,notif0,notif1,if,inout,in ...…

查看全部问答>

cc1101无线收发程序完整版

其实无线收发程序都是一样的,只是一个收一个接,希望用户注意咯…

查看全部问答>

电力线载波芯片

电力线载波调制解调器能不能自己做   用什么芯片   希望能得到指点…

查看全部问答>

出一套全新原装TI stellaris Launchpad LM4F120 开发板

全新原装TI stellaris Launchpad LM4F120 开发板,希望兑换4000芯币 已被 exiao 以4000芯币拍下! file:///F:/QQ截图20130809132653 [ 本帖最后由 长毛小兔 于 2013-8-11 23:30 编辑 ]…

查看全部问答>