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寄存器点灯的主要内容,如果未能解决你的问题,请参考以下文章