单片机学习小组
直播中

李晨灵

7年用户 1410经验值
私信 关注

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

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

回帖(1)

李兆峰

2022-2-11 11:54:19
配置寄存器使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灯亮起。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分