当前位置:首页 > 单片机 > 单片机
[导读]STM32F4每个GPIO端口有四个32位配置寄存器(GPIOx_MOER,GPIOx_OTYPER,GPIOx_OSPEEDR和GPIOx_PUPDR),两个32位数据寄存器(GPIO_IDR和GPIO_ODR),一个32为置位/复位寄存器(GPIOx_BSRR),一个32为GPIO锁寄存器(GPIO

STM32F4每个GPIO端口有四个32位配置寄存器(GPIOx_MOER,GPIOx_OTYPER,GPIOx_OSPEEDR和GPIOx_PUPDR),两个32位数据寄存器(GPIO_IDR和GPIO_ODR),一个32为置位/复位寄存器(GPIOx_BSRR),一个32为GPIO锁寄存器(GPIOx_LCKR),两个32为复用功能寄存器(GPIOx_AFRH和GPIOx_AFRL)。主要特性如下
·每个端口支持16个IO引脚控制
·推挽或者开漏+带上拉电阻或者下拉电阻
·从数据输出寄存器(GPIOx_ODR)或者外设(复用功能引脚)输出数据
·每个IO支持速度选择
·输入状态:浮动,上拉/下拉,模拟
·输入数据到输入数据寄存器(GPIOx_IDR)或者外设(复用功能输入)
·置位和复位寄存器(GPIOx_BSRR)
·GPIO锁机制,用于冻结IO配置
·模拟输入
·复用功能输入输出选择寄存器
·每两个时钟周期的快速IO切换
·高灵活度的复用功能使得IO可以作为通用IO使用或者外设使用

根据数据手册中列出的每个 I/O 端口的特定硬件特征,GPIO 端口的每个位可以由软件分别配置成多
种模式。
·输入浮空
·输入上拉
·输入下拉
·模拟输入
·具有上拉下拉功能的开漏输出
·具有上拉下拉功能的推挽输出
·具有上拉下拉功能的推挽复用功能
·具有上拉下拉功能的开漏复用功能
每个IO口可以自由编程,端口寄存器必须按32位字被访问。GPIOx_BSRR跟GPIOx_BRR允许对热河GPIO的读/写的独立访问;这样在读和写之间访问之间产生IRQ(中断请求)时不会发生危险。 关于引脚耐压5V可以参考数据手册的引脚说明。
复位期间跟刚复位后,复用功能未开启,IO端口被配置成浮空输入模式,复位后JTAG引脚被置于输入上拉或下拉模式。
PA15:JTDI置于上拉模式
PA14:JTCK/SWCLK置于下拉模式
PA13:JTMS/SWDAT置于上拉模式
PB4:JNTRST置于上拉模式
PB3:JTDO浮空状态

微控制器通过多路选择器将 IO 引脚与相应的片上外设相连接,这里要注意一点,每一次只能与一个片上外设相连接,防止多个外设使用这个引脚造成冲突。
每个引脚都有一个多路选择器,每个多路选择器有 16 路输入(AF0 到AF15) ,通过寄存器 GPIOx_AFRL(从 0 到 7)和 GPIOx_AFRH(从 8 到 15)进行配置。
·复位后 IO 引脚默认连接到系统复用功能 0(AF0)
·片上外设的复用功能映射从 AF1 到 AF13
·M4 的 FPU EVENTOUT 映射到 AF15
不能将EVENTOUT映射到一下引脚:PC13,PC14,PC15,PH0,PH1和PI8
置位和复位寄存器(GPIOx_BSRR)是一个 32 位寄存器,允许用户程序置位或者复位输出数据寄存器 GPIOx_ODR 的每个位。置位和复位寄存器GPIOx_BSRR 的位数是 GPIOx_ODR 的两倍。寄存器 GPIOx_BSRR 就是对寄存器 GPIOx_ODR 的位操作,GPIOx_BSRR 的高 16 位用于
复位操作,低 16 位用置位操作,只有对寄存器 GPIOx_BSRR 相应的位置 1 才对寄存器 GPIOx_ODR 有效,置 0 是无效的。如果对于寄存器GPIOx_ODR 的同一位同时进行置位和复位操作,那么置位操作的优先级要高。当对 GPIOx_ODR 的个别位编程时,软件不需要禁止中断:在单次AHB1 写操作里,可以只更改一个或多个位。GPIO锁允许冻结IO配置。在一个端口位上执行了LOCK程序,下一次复位前将不能再更改端口位配置。
所有端口都有外部中断能力,在使用外部中断先端口必须配置成输入模式。
模拟输入配置时,输出换从其被禁止,禁止施密特触发器输入,弱上拉下拉被电阻禁止,读输入寄存器时数值为0。
外设的GPIO设置模式在F1参考手册上有,但是在F4上这个说明没有了具体大家在使用的时候可以参考f1,也可以参考官方外设例子。

STM32F4的GPIO库
初始化配置函数
void GPIO_DeInit(GPIO_TypeDef*GPIOx)初始化GPIO寄存器到默认值
void GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct)GPIO初始化
void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct)将GPIO_InitStruct组员设置到默认值
void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)GPIO寄存器锁

GPIO的读和写
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)读某一引脚的输入数据寄存器IDR
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx)读某一端口的输入数据寄存器IDR
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx)读某一端口的输出数据寄存器ODR
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)读某一引脚的输出数据寄存器ODR
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)GPIO置高
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)GPIO置低
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin,BitAction BitVal)根据BitVal写ODR寄存器
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal)设置输出寄存器ODR数值
void GPIO_ToggleBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)通过GPIO->ODR^=GPIO_Pin;实现GPIO翻转

GPIO复用功能配置函数
void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)使用前要先使能GPIO时钟与外设时钟


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

基于ARM® Cortex®-M4的STM32F4 MCU系列采用了意法半导体的NVM工艺和ART Accelerator™,在高达180 MHz的工作频率下通过闪存执行时其处理性能达到225 DMIPS/608 Cor...

关键字: stm32f4 ARM

stm32f4和f1都有哪些区别?除了需要的头文件不一样,管脚配置什么的有区别么?

关键字: stm32f4 f1 比较

STM32F407VET6引脚图及中文资料

关键字: stm32f4 引脚图

比较F1的片子对于F4的RTC来说有很大提升,F4的RTC提供了日历时钟和两个可编程闹钟中断,一个周期性可编程唤醒标志。这样很方便设置系统时间,并不会像F1的RTC那样要自己计算年月日时分秒。F4的RTC是一个独立的BC...

关键字: rtc stm32f4

【实验目的】输出7路占空比不同的PWM信号是各个版本ST库必备的例子。本实验的主要目的不是表现ST芯片PWM功能的强大,而是要完成输出的精确计算。【实验内容】输出7路PWM信号,并用示波器测量输出。【实验原理】1、时

关键字: pwm stm32f4 tim1 信号输出

STM32F4的随机数发生器RNG,以环境噪声为种子,产生32位随机数供主机使用。【主要特性】1、产生32位随机数 2、两次转换时间间隔40PLL48CLK 3、随机数熵检测以发现不正常位,以产生稳定序列 3、可被关闭以...

关键字: stm32f4 随机数发生器

书接上文,开始折腾ADC的DMA传输。因为大家都在说DMA,就连ST的例子里边也是使用DMA的。 ADC采集到的数据都存储在一个固定的寄存器中。当常规采样方式采样多个通道时候,使用DMA可以较好地避免将采集到的数据...

关键字: adc dma stm32f4 数据传输 采集数据

为了提搞系统的可靠性,STM32F4系列MCU有一个独立看门狗(IWDG)和一个窗口看门狗(WWDG)。今天做的实验是关于独立看门狗的。独立看门狗使用的时钟源是内部低速振荡器LSI。因为LSE可能没接,HSE可能坏点,H...

关键字: iwdg stm32f4 独立看门狗

对于串口就不多罗嗦了, 虽然串口是一种比较古老的接口, 速度较慢, 在计算机上早已淘汰, 但是由于它结构简单, 使用方便, 或许也由于在计算机上使用过有基础支撑(单片机就是在走曾经电脑走过的路), 在嵌入式系统中依然

关键字: stm32f4 usart配置

Ⅰ、概述STM32的TIM定时器分为三类:基本定时器、通用定时器和高级定时器。从分类来看就知道STM32的定时器功能是非常强大的,但是,功能强大了,软件配置定时器就相对复杂多了。很多初学者甚至工作了一段时间的人都不

关键字: stm32f4 tim 基本延时 计数原理
关闭