基于寄存器的STM32操作流程

寄存器点灯

寄存器操作STM32的好处是不需要依靠外部文件,自由度更高,更为底层,但也更加繁杂。

通过寄存器点灯,需要按照电路结构与手册配置寄存器:

电路结构如下:可知需配置的GPIO为GPIOB5与GPIOE5。

在STM32中,一般外设需配置三个寄存器:

首先配置APB2外设时钟使能寄存器,

按手册,需配置IOPE(6位),IOPB(3位),使其为1,其余为0,则16进制为:0x00000048,代码为:

cpp 复制代码
RCC->APB2ENR=0x00000048;

接着配置端口配置寄存器,

按原理图可知,需配置GPIOB5与GPIOE5,手册上5位为低寄存器,且输出模式需为通用推挽输出,最大速度为50HZ,则CNF为00,MODE为11,则20,21为1,其余赋值为0,写成16进制,为0x00300000,代码为:

cpp 复制代码
GPIOE->CRL=0x00300000;//LED1
GPIOB->CRL=0x00300000;//LED0

即配置完毕。

配置端口输出数据寄存器:

按说明手册,ODR为1,则整体16进制值为0x00000040,则代码为

cpp 复制代码
GPIOB->ODR=0x00000040;
GPIOB->ODR=0x00000040;

配置完毕。

接着依靠keil生成的可执行文件下入开发板即可,完整代码为:

cpp 复制代码
#include "stm32f10x.h"                  // Device header
int main(void)
{
	RCC->APB2ENR=0x00000048;
	GPIOE->CRL=0x00300000;//LED1
  GPIOB->CRL=0x00300000;//LED0
	GPIOB->ODR=0x00000040;
  GPIOB->ODR=0x00000040;
	while(1)
	{}
}

现象为LED0与LED1一直亮。

相关推荐
传感器与混合集成电路1 分钟前
LIFM1 LIFM2 LIFM3多路IF转换模块量程输出频率精度等级选型
嵌入式硬件
一直C1 分钟前
嵌入式 Linux 驱动开发学习笔记(三)设备树、GPIO子系统、中断与外设驱动实战
驱动开发·单片机·嵌入式硬件·嵌入式·arm·imx6ull
逐步前行20 分钟前
ESP32-S3-Temp_Sensor(内部温度传感器)
单片机·嵌入式硬件
li星野22 分钟前
【学习记录】DAP调试器电路原理图完全详解:从STM32最小系统到SWD调试接口
stm32·嵌入式硬件·学习
Naiva26 分钟前
AD19 基础应用技巧: Polygon Pour 铺铜完成后,自动将铜皮产生的尖角变成圆角
单片机
深圳市恒锐丰科技杨生37 分钟前
LR050N03TL4 N 沟道 MOSFET|龙夏电子 Long‑Tek
嵌入式硬件·硬件工程
下辈子不要当码农1 小时前
Linux驱动(2)
linux·运维·单片机
Zw-awa1 小时前
黑盒与白盒:人是怎么把世界装进口袋的
stm32
尼喃1 小时前
PW2609原厂要停产,升级版PW2609A:引脚相同
嵌入式硬件
lzqrzpt1 小时前
LED驱动电源选型核心参数解析与工程适配准则
python·单片机·嵌入式硬件