STM32端口配置的8种模式

STM32端口配置涉及8种模式,本文聚焦于输出模式的开漏和推挽的区别。通过参考STM32英文手册的寄存器配置,结合官方库函数的代码示例,详细阐述两种模式的工作原理及其应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在stm32英文参考手册有对应的寄存器配置方式




以下是在官方库函数中复制的代码

typedef enum
{ GPIO_Mode_AIN = 0x0,//     0000 
  GPIO_Mode_IN_FLOATING = 0x04,//     0100 
  GPIO_Mode_IPD = 0x28,//0010 1000
  GPIO_Mode_IPU = 0x48,//0100 1000
  GPIO_Mode_Out_OD = 0x14,     //0001 0100
  GPIO_Mode_Out_PP = 0x10,     //0001 0000
  GPIO_Mode_AF_OD = 0x1C,      //0001 1100
  GPIO_Mode_AF_PP = 0x18       //0001 1000
}GPIOMode_TypeDef;

### STM32端口配置寄存器结构与使用 #### 寄存器概述 STM32微控制器系列提供了丰富的外设接口,其中GPIO(通用输入输出)端口是最重要的外围之一。每个GPIO端口由多个寄存器控制,这些寄存器决定了引脚的功能模式和其他特性。 #### 主要配置寄存器及其功能 对于STM32F4系列而言,主要涉及以下几个用于配置的寄存器: - **MODER (Mode Register)**:设置每个引脚的工作模式,比如输入、输出或是替代功能等[^1]。 - **OTYPER (Output Type Register)**:决定当引脚被配置成输出时的操作类型——推挽还是开漏输出。 - **OSPEEDR (Output Speed Register)**:设定输出速度等级,影响驱动能力以及功耗表现。 - **PUPDR (Pull-Up/Pull-Down Register)**:配置上拉/下拉电阻状态,有助于防止浮空电平带来的不确定行为。 - **AFRL 和 AFRH (Alternate Function Low/High Registers)**:如果选择了替代功能,则通过这两个寄存器指定具体的用途;低字节部分覆盖前8位(Pin0-Pin7),高字节处理剩余的部分(Pin8-Pin15)。 #### 配置实例代码展示 下面给出一段简单的初始化程序片段,展示了如何利用上述提到的各种寄存器完成基本的GPIO端口配置工作: ```c // 假定目标为 GPIOA 的 Pin0 设置为推挽输出模式,并启用内部上拉电阻 void Init_GPIO(void){ // 启动 RCC 使能 GPIOA 时钟 __HAL_RCC_GPIOA_CLK_ENABLE(); // 清除并写入 MODER 寄存器中的相应位置以选择输出模式 GPIOA->MODER &= ~(3 << (0 * 2)); // 清零原有值 GPIOA->MODER |= (1 << (0 * 2)); // 设定为一般推挽输出 // OTYPER 默认即为推挽方式无需额外操作 // OSPEEDR 可选,默认即可满足大多数应用场景需求 // PUPDR 中激活上拉电阻 GPIOA->PUPDR &= ~(3 << (0 * 2)); GPIOA->PUPDR |= (1 << (0 * 2)); // 上拉 // AFRL 不做更改因为这里不需要用到替代功能 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值