STM32寄存器点灯

Posted Heavy sea

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32寄存器点灯相关的知识,希望对你有一定的参考价值。

配置寄存器使STM32最小系统板上的LED灯点亮

根据原理图,要使D2点亮,需要将PC13拉低,分为以下步骤:

  • 使能GPIO的时钟
  • 配置GPIO13为输出模式
  • 配置GPIO13输出低电平

一、确定有关寄存器及其地址

1.起始地址


记录时钟控制寄存器的起始地址为0x4002 1000
GPIOC寄存器起始地址为0x4001 1000

2.使能寄存器

根据系统架构图,可知使能GPIO时钟需要去找APB2外设使能寄存器



使能寄存器地址+偏移地址(0x4002 1000+0x18) 左移4位 *(unsigned int*)0x40021018 |= 0x01<<4

3.配置输出模式

STM32每个端口有16个IO口。所以要分2个寄存器来操作。这2个寄存器用来选择对应的IO口,IO0—7使用低,8-15使用高。
我们这里是GPIOC13,因此选择端口配置高寄存器

配置推挽输出,最大速度10MHZ
配置相应位为0001
该寄存器地址是GPIOC寄存器地址+偏移地址(0x4001 1000+0x04)
*(unsigned int*)0x40011004 |= 0x01<<20

4.配置低电平


该寄存器地址是GPIOC寄存器地址+偏移地址(0x4001 1000+0x0C)
*(unsigned int*)0x4001100C &= ~(0x01<<13);

二、代码

需要将数字0x…强转成地址,再给地址取内容

#include "stm32f10x.h"
// 不让程序报错
void SystemInit()




int main()
	
	// 使能GPIO时钟
	*(unsigned int*)0x40021018 |= 0x01<<4;
	
	// 配置输出模式
	*(unsigned int*)0x40011004 |= 0x01<<20;
	
	// 输出低电平
	*(unsigned int*)0x4001100C &= ~(0x01<<13);





三、烧录测试

把Boot0置1,使用的是STM32最小系统板的话,需要把靠近Boot0的端子拔插到1的位置。

打开烧录工具FlyMcu,使用USB转TTL工具连接串口进行烧录
STM32F103的TX为PA9,RX为PA10


注意这里选择DTR的低电平复位,RTS高电平进Bootloader

烧写完毕后,把端子插回去,按下复位键,可以看见LED灯亮起。

以上是关于STM32寄存器点灯的主要内容,如果未能解决你的问题,请参考以下文章

STM32寄存器点灯

stm32寄存器点灯

stm32F103寄存器点灯

STM32上实现点灯(固件库方式)

STM32如何新建工程+寄存器点亮LED灯

STMF4-1-固件库点灯