STM32中控制I/O口的寄存器们

 引言  

 STM32的I/O口由软件配置,有八种模式:输入悬浮、输入上拉、输入下拉、模拟输入、开漏输出、推挽输出、推挽式复用功能及开漏复用功能。

每个I/O口由7个寄存器控制,分别是:


模式配置的端口寄存器 32位  CRL、CRH

数据寄存器  32位 IDR、ODR

置位/复位寄存器  32位 BSRR

复位寄存器  16位 BRR

锁存寄存器  32位 LCKR


主要介绍一下CRL、CRH、IDR、ODR


一 CRL、CRH

CRL控制低8位I/O口,CRH控制高8位I/O口,下图是《STM32参考手册》和《原子教你玩STM32》中关于CRL的介绍。CRL共32位,每四位控制一个I/O口,所以控制8个I/O口。CRH与CRL类似,就不做介绍了。

GPIOx->CRL&=0xfffffff0;//x:A~E;用哪一位I/O口先置零
GPIOx->CRL|=0x00000003;//设置I/O口的功能

 
  

STM32中控制I/O口的寄存器们_第1张图片

STM32中控制I/O口的寄存器们_第2张图片

二 IDR、ODR

IDR为端口输入寄存器,只用了低16位,且为只读寄存器。ODR为端口输出寄存器,也只用了低16位,可读可写,该寄存器读出的数据可以判断I/O口的输出状态,向该寄存器写数据可以控制I/O口的输出电平。下图为《STM32参考手册》中关于IDR和ODR的介绍。

GPIOx->ORD|=1<<5;//第五位输出高电平


STM32中控制I/O口的寄存器们_第3张图片


STM32中控制I/O口的寄存器们_第4张图片


更多精彩内容,欢迎关注【跟单片机谈恋爱】


你可能感兴趣的:(stm32)