野火霸道STM32学习笔记1(视频7-9)

本文是野火STM32学习笔记的一部分,介绍了如何通过寄存器编程点亮LED。首先解释了寄存器和存储器映射的概念,然后详细阐述了不使用固件库时,直接操作地址和给地址起别名的两种方法。内容包括新建Keil5工程,选择STM32F103ZE芯片,分析并操作RCC_APB2ENR、GPIOx_CRL和GPIOx_ODR寄存器来控制LED灯。
摘要由CSDN通过智能技术生成

野火霸道STM32学习笔记1(视频7-9)

今年在年初的时候入了一个野火的STM32F103ZE的开发板(也有正点原子的,不知道有没有更好些),因为大三了,感觉也没在学校学太多(学校设施是真的菜,唉),是物联网专业的,就想去从事嵌入式STM32的工作。之前也有接触F103C8,但并没有深入的去了解,所以现在开始正式开始STM32学习之路(磨磨唧唧的hhh)。

首先,学习寄存器的编程,之后会用固件库。

什么是寄存器?
给有特定功能的内存单元取一个别名,这个别名就是我们经常说的寄存器,这个给已经分配好地址的有特定功能的内存单元取别名的过程就叫寄存器映射。

什么叫存储器映射?
给存储器分配地址的过程叫存储器映射,再分配一个地址叫重映射。

在这里插入图片描述
我们主要操作的是Block2,直接对地址进行编程(寄存器编程)

点亮LED

点亮LED灯是学习STM32的第一步,学习8位单片机的时候也是先学LED灯的点亮,so… 不使用官方固件库的话,有三种方法进行编程:直接对地址进行操作、给地址起别名的寄存器编程,结构体编程(类似固件库雏形),本文用前两种简单方法实现

步骤:
1. Keil5新建工程,选芯片STM32F103ZE芯片;
2. 添加startup_stm32f10x_hd.s(启动文件)、stm32f10x.h(包含所有外围寄存器的定义、STM32F10x连接线的定义和内存映射)、main.c;
在这里插入图片描述
3.这时需要分析要操作的寄存器

  • LED原理图,LED是由三色RGB灯组成,PB5红灯、PB0绿灯、PB1蓝灯
    在这里插入图片描述
  • 需要操作的寄存器RCC_APB2ENR(GPIOB在APB总线下,为了节能默认为关)、GPIOx_CRL(配置IO口为输出/输入模式、模式、速度)、GPIOx_ODR(IO口高/低电平
  • 设为推挽输出模式,最大速度10MHz,开发板输出低电平灯亮,GPIOx_ODR默认为0

代码如下

第一种方法:直接对地址操作

main.c

#include "stm32f10x.h"
void Delay()
{
   
	int i , j;
	for(i = 0; i< 1000; i++)
  	for(j = 0; j< 1000; j++);
}
//PB0 绿灯 PB1蓝灯  PB5红灯
int main(void)
{
   
	 //1、APB2 RCC_APB2ENR 打开GPIOB 端口的时钟
 	*(unsigned int *)0x40021018 |= (1<<3);
	//2、配置IO为推挽输出 端口配置低寄存器 (GPIOx_CRL)
	 while
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值