原子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个引脚 |
配置技巧:
- 原子操作:
使用&= ~()和|= ()组合避免影响其他位(如MODER |= 0x01 << 10只修改PA5)。 - 速度选择:
- 低速(00): 2MHz
- 中速(01): 25MHz
- 高速(10): 50MHz
- 超高速(11): 100MHz (推荐)
- 复用功能:
若需配置为UART等外设,需额外设置
AFRL/AFRH寄存器选择复用功能号。
注意:
- 所有地址基于 STM32F40x/41x 系列,其他型号需查对应《参考手册》(RM0090)。
- 实际开发推荐使用CMSIS头文件(如
stm32f4xx.h)中预定义的寄存器名(如GPIOA->MODER)。- 操作寄存器前务必使能外设时钟(RCC寄存器),否则配置无效!
可通过STM32CubeMX生成初始化代码后再提炼出寄存器操作逻辑,保障准确性。
使用STM32F4系列的芯片驱动ADS1110做电压采样,配置寄存器设置为0x8C,读出的寄存器值时0XFF,为什么?
使用STM32F4系列的芯片驱动ADS1110做电压采样,配置寄存器设置为0x8C,但是读出的
深入浅出谈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
如何查找STM32F4外设配置
被使能和关闭使用协处理器控制寄存器(SCB->CPACR)中的CP11和CP10启用/关闭FPU芯片复位后,CP10、CP11四个位默认为0,FPU关闭将CP10、CP11同时置位即可开启FPUFPU使用sys
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- amoled屏幕和oled区别
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览