登录/注册

原子STM32F4寄存器配置

原子STM32F4寄存器配置

更多

在STM32F4系列微控制器中,寄存器配置是通过直接操作内存映射的寄存器来实现的。以下是一个GPIO引脚配置为推挽输出的完整寄存器级操作示例(以PA5为例),包含详细步骤和中文注释:


1. 使能GPIOA时钟

// RCC_AHB1ENR 地址: 0x40023830 (参考RM0090手册)
*(volatile uint32_t*)0x40023830 |= (1 << 0); // 置位BIT0 (GPIOAEN)

2. 配置GPIO模式(MODER寄存器)

// GPIOA_MODER 地址: 0x40020000
*(volatile uint32_t*)0x40020000 &= ~(0x03 << 10); // 清除PA5的模式位(MODER5)
*(volatile uint32_t*)0x40020000 |=  (0x01 << 10); // 设置为输出模式(01)

3. 配置输出类型(OTYPER寄存器)

// GPIOA_OTYPER 地址: 0x40020004
*(volatile uint32_t*)0x40020004 &= ~(1 << 5); // BIT5=0: 推挽输出

4. 配置输出速度(OSPEEDR寄存器)

// GPIOA_OSPEEDR 地址: 0x40020008
*(volatile uint32_t*)0x40020008 |= (0x03 << 10); // BIT[11:10]=11: 高速模式(100MHz)

5. 配置上拉/下拉(PUPDR寄存器)

// GPIOA_PUPDR 地址: 0x4002000C
*(volatile uint32_t*)0x4002000C &= ~(0x03 << 10); // BIT[11:10]=00: 无上拉/下拉

6. 控制输出电平(ODR寄存器)

// GPIOA_ODR 地址: 0x40020014
*(volatile uint32_t*)0x40020014 |=  (1 << 5);   // PA5输出高电平
// *(volatile uint32_t*)0x40020014 &= ~(1 << 5); // PA5输出低电平

关键寄存器详解

寄存器名 地址 作用 关键位域
RCC_AHB1ENR 0x40023830 外设时钟使能 BIT0: GPIOAEN
GPIOx_MODER 0x40020C00 引脚模式设置 每2位控制1个引脚
GPIOx_OTYPER 0x40020C04 输出类型(推挽/开漏) 1位控制1个引脚
GPIOx_OSPEEDR 0x40020C08 输出速度(低/中/高/超高速) 每2位控制1个引脚
GPIOx_PUPDR 0x40020C0C 上拉/下拉电阻配置 每2位控制1个引脚
GPIOx_ODR 0x40020C14 输出数据电平控制 1位控制1个引脚

配置技巧

  1. 原子操作
    使用 &= ~()|= () 组合避免影响其他位(如 MODER |= 0x01 << 10 只修改PA5)。
  2. 速度选择
    • 低速(00): 2MHz
    • 中速(01): 25MHz
    • 高速(10): 50MHz
    • 超高速(11): 100MHz (推荐)
  3. 复用功能: 若需配置为UART等外设,需额外设置 AFRL/AFRH 寄存器选择复用功能号。

注意

  • 所有地址基于 STM32F40x/41x 系列,其他型号需查对应《参考手册》(RM0090)。
  • 实际开发推荐使用CMSIS头文件(如stm32f4xx.h)中预定义的寄存器名(如GPIOA->MODER)。
  • 操作寄存器前务必使能外设时钟(RCC寄存器),否则配置无效!

可通过STM32CubeMX生成初始化代码后再提炼出寄存器操作逻辑,保障准确性。

使用STM32F4系列的芯片驱动ADS1110做电压采样,配置寄存器设置为0x8C,读出的寄存器值时0XFF,为什么?

使用STM32F4系列的芯片驱动ADS1110做电压采样,配置寄存器设置为0x8C,但是读出的

2024-11-29 07:24:25

STM32F4时钟配置的操作步骤

本文将介绍STM32F4时钟配置的操作步骤、并对比时钟配置前后LED外设闪烁的快慢以及对应代码的讲解。

2023-04-21 11:29:44

怎样通过寄存器去控制STM32F4 IO口的高低电平

怎样通过寄存器去控制STM32F4 IO口的高低电平呢?并实现一个经典的跑流水灯程序?

2022-02-11 08:02:32

AN3988 基于STM32F4的时钟配置工具

AN3988 基于STM32F4的时钟配置工具

资料下载 廉鼎琮 2022-11-24 08:32:13

深入浅出谈STM32F4系列单片机GPIO相关配置——寄存器

STM32通用I/O(GPIO)从嵌入式开发实践中总结出来的教程,深入浅出地教大家怎样掌握STM32IO口的使用。所谓寄存器

资料下载 ah此生不换 2021-12-14 18:42:01

STM32F4寄存器与IO输入输出学习

IO设置函数包括两个函数:GPIO_Set和GPIO_AF_Set. GPIO_AF_Set,每次只能设置一个IO口的复用功能。STM32F4的每组通用I/O端口包括4个32位

资料下载 佚名 2021-11-29 14:21:07

IO口配置常用的8个寄存器 1.6

IO 配置常用的 8 个寄存器: MODER、OTYPER、OSPEEDR、PUPDR、ODR、IDR 、AFRH 和 AFRL。MODER 寄存器

资料下载 佚名 2021-11-29 13:51:03

STM32F4内部Flash实验例程

STM32F4内部Flash实验例程(嵌入式开发版哪个好)-STM32F4内部Flash实验例程,有需要的可以参考!

资料下载 无人岛 2021-07-30 15:58:01

GPIO寄存器详解

STM32F4工程--IO口--GPIO寄存器详解 ----芯片:STM32F429IGT6----参考资料:正点

2022-01-18 06:53:40

如何查找STM32F4外设配置

被使能和关闭使用协处理器控制寄存器(SCB->CPACR)中的CP11和CP10启用/关闭FPU芯片复位后,CP10、CP11四个位默认为0,FPU关闭将CP10、CP11同时置位即可开启FPUFPU使用sys

2021-12-09 07:48:16

STM32F4寄存器开发指南

STM32F4寄存器的时钟该怎样去配置呢?如何去实现对STM32F4各个

2021-11-29 06:29:48

STM32f4嘀嗒定时包含哪几个寄存器

STM32f4嘀嗒定时器的主要作用是什么?STM32f4嘀嗒定时器包含哪

2021-11-24 07:23:47

STM32F4关键寄存器有哪些?

STM32F4关键寄存器有哪些?

2021-11-23 06:29:40

STM32F4的GPIO区别与F1的GPIO配置

STM32F4的GPIO区别与F1的GPIO配置,每个 I/O 端口位均可自由编程,但 I/O 端口

2021-09-17 06:27:46

STM32F4开发指南-寄存器版本

整理自STM32F4中文参考手册(ST)、STM32F4开发指南-寄存器版本(正点原子

2021-08-18 08:07:58
7天热门专题 换一换
相关标签