STM32-寄存器点灯案例详解 本文以PA1引脚点亮LED灯为案例解析了STM32寄存器操作的配置过程以及从手册查询方法和寄存器配置步骤。一、概念1.十六进制和二进制之间相互转换关系首先需要了解十六进制和二进制之间的基本转换方法。十六进制是一种基数为16的数制用数字0到9和字母A到F或a至f)表示。二进制则是基数为2的数制仅使用数字0和1表示。每一个十六进制的数字可以转换成一个四位的二进制数。如十六进制的1转换为二进制是0001,十六进制的A (或a)转换为二进制是1010对于0xFFFFFFF0来说可以拆分并转换为对应的二进制F 1111编00000因此0xFFFFFFF0的完整二进制表示是1111 1111 1111 1111 1111 1111 1111 0000二、步骤1.定位APB总线寄存器位置第一步 开启外设时钟使能寄存器当外设时钟没有启用时软件不能读写外设寄存器数值。返回值始终为0x00首先找寄存器映射表STM32第6章提供了储存器映像由此观察RCC的起始和终止地址分别为RCC_Start: 0x4002 1000RCC_End: 0x4002 1400接着看具体RCC中有关IO PortA寄存器偏置位由图可知APB2外设时钟使能寄存器的偏移地址为0x18;即如果你想设置RCC_APB2ENR这个寄存器你就必须先定位RCC地址(0x4002 100)偏移(0x18)#define RCC_APB2ENR *((volatile unsigned int *) (0x40021000 0x18))2.定位IO口端口配置寄存器位置这里我们使用IO口的A2作为例子查询寄存器映射可得PortA起始地址为0x4001 0800 终止地址为 0x4001 0C00同理配置IO端口配置寄存器首先要找到GPIO的偏移地址查表可得该寄存器的地址为GPIO_PortA 偏移0x00#define GPIOA_CRL (*((volatile unsigned int *) (0x40010800 0x00)))3.定位IO口引脚使能寄存器位置GPIO_PortA 偏移0x10#define GPIOA_BSRR (*((volatile unsigned int *) (0x40010800 0x10)))4.APB总线使能RCC_APB2ENR | 12; //RCC PortA 时钟启用5.IO口端口配置GPIOA_CRL 0xFFFFFF0F;//端口配置CNF1和MODE1清零 GPIOA_CRL | 0x00000030;//端口配置CNF1设定推挽输出MODE1设定输出模式最大速度50MHz 00116.引脚使能GPIOA_BSRR 11;//端口位设置SET/RESET ,即BS1设定为SET三、案例#include stm32f10x.h // Device header //定义三个寄存器 #define RCC_APB2ENR (*((volatile unsigned int *) (0x40021000 0x18)))//控制RCC_APB2总线 #define GPIOA_CRL (*((volatile unsigned int *) (0x40010800 0x00)))//GPIO_CRLGPIO_A端口配置低配置寄存器 #define GPIOA_BSRR (*((volatile unsigned int *) (0x40010800 0x10)))//GPIOA_BSRR(GPIO端口位设置/清除寄存器) int main(){ //对寄存器进行相应设定 RCC_APB2ENR | 12; //RCC PortA 时钟启用 GPIOA_CRL 0xFFFFFF0F;//端口配置CNF1和MODE1清零 GPIOA_CRL | 0x00000030;//端口配置CNF1设定推挽输出MODE1设定输出模式最大速度50MHz 0011 GPIOA_BSRR 11;//端口位设置SET/RESET ,即BS1设定为SET while(1){ }; return 0; }

相关新闻

最新新闻

论文等级与期刊分类(超详细版)

论文等级与期刊分类(超详细版)

学术之路,从读懂论文开始。这篇文章帮你理清那些让人头秃的英文缩写和等级划分,建议收藏慢慢看。 作为一个刚踏入学术圈的小白,想必你也有过这样的经历:导师让你去读几篇“核心期刊”论文,你满口答应,转头…

2026/8/22 15:44:50
C# 在逗号分割的字符串中判断是否包含指定字符

C# 在逗号分割的字符串中判断是否包含指定字符

目录 方法1:使用 Contains 方法 方法2:分割字符串并检查每个元素 方法3:使用 LINQ 方法4:正则表达式(如果需要更复杂的匹配) 总结 如果您喜欢此文章,请收藏、点赞、评论,谢谢&a…

2026/8/22 15:44:50
SPA 刷新 404 难题终结者:boot-react SinglePageAppConfig pushState 资源解析器深度剖析

SPA 刷新 404 难题终结者:boot-react SinglePageAppConfig pushState 资源解析器深度剖析

SPA 刷新 404 难题终结者:boot-react SinglePageAppConfig pushState 资源解析器深度剖析 【免费下载链接】boot-react A starter application with spring boot and react 项目地址: https://gitcode.com/gh_mirrors/bo/boot-react 🚀 boot-reac…

2026/8/22 15:44:50
文献综述的“时空折叠法”:书匠策AI把百年学术史放进你的电脑屏幕

文献综述的“时空折叠法”:书匠策AI把百年学术史放进你的电脑屏幕

官网:www.shujiangce.com | 微信公众号:书匠策AI 文献综述最怕什么?最怕你读了100篇论文,脑子里还是一团浆糊——分不清谁先谁后、谁支持谁反对、哪个方向已经做烂了、哪个角落还没人碰过。就像站在一个巨大的图书馆里&#xff…

2026/8/22 15:44:50
FloPy + MODPATH完全教程:构建粒子追踪模拟并可视化地下水流路径

FloPy + MODPATH完全教程:构建粒子追踪模拟并可视化地下水流路径

FloPy MODPATH完全教程:构建粒子追踪模拟并可视化地下水流路径 【免费下载链接】flopy A Python package to create, run, and post-process MODFLOW-based models. 项目地址: https://gitcode.com/gh_mirrors/fl/flopy FloPy 是一个强大的 Python 地下水模…

2026/8/22 15:44:50
【LangChain】示例选择器(Example Selectors)实战指南

【LangChain】示例选择器(Example Selectors)实战指南

🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C知识分享》 《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录前言一. 什么是示例选择器?…

2026/8/22 15:39:50