2-2 点灯例程(寄存器开发)

视频选集(4/50)[2-2] 新建工程

注.未烧录任何程序的前提下,STM32最小系统板上电后,出现现象:电源指示灯长亮,IO口测试灯不断闪烁。这是芯片里的一个测试程序

1. 器件

  • STM32最小系统板
  • 杜邦线(母对母)*4
  • ST-LINK V2下载器

2. 实现目标

点亮开发板上的IO口测试灯

2. 创建工程文件

  1. 复制工程建立 - LI,Yi-han - 博客园一篇中创建的2-1 STM32工程模板(寄存器开发)文件,粘贴副本,重命名为2-2 点灯例程(寄存器开发)文件

  2. 打开工程文件

  3. 最小系统板接上下载器,下载器通过USB口与PC主机连接

    image-20250728202826702

  4. 编译工程文件,点击下载

    image-20250728203100640

    image-20250728203011809

  5. 可见开发板上现象:电源灯依旧长亮,IO口测试灯熄灭、不再闪烁。这是由于该工程的主函数内只有一个空的死循环

3. 配置寄存器

  • IO口测试灯的对应引脚为PC13

  • 由图可见该LED为低电平点亮

    image-20250728203858647

  • PC13是GPIOC端口的IO口

  • GPIOC挂载在APB2下

  • 使用任何外设前,都要先使能时钟

3.1 APB2外设时钟使能寄存器RCC_APB2ENR

image-20250728205424159

image-20250728205447406

RCC->APB2ENR = 0x1<<4; // 将该寄存器的位4置1【开启GPIOC的时钟】

3.2 GPIOC端口配置高寄存器GPIOC_CRH

image-20250728210315238

image-20250728210700645

GPIOC->CRH = 0x3<<20; // 将该寄存器的位20、21置1【配置IO口-PC13:通用推挽输出模式,最大速度为50MHz】

3.3 GPIOC端口输出数据寄存器GPIOC_ODR

image-20250728211940837

  • 位13置1,则PC13引脚输出高电平
  • 位13置0,则PC13引脚输出低电平
GPIOC->ODR = 0x0; // 将该寄存器的位13置0【使PC13输出低电平,LED点亮】
GPIOC->ODR = 0x1<<13; // 将该寄存器的位13置1【使PC13输出高电平,LED熄灭】

4. 程序

main.c文件如下:

#include "stm32f10x.h"                  // Device header

/*------------------------------主函数------------------------------*/
int main(void)
{
	RCC->APB2ENR = 0x1<<4; // 将该寄存器的位4置1【开启GPIOC的时钟】
	GPIOC->CRH = 0x3<<20; // 将该寄存器的位20、21置1【配置IO口-PC13:通用推挽输出模式,最大速度为50MHz】
	GPIOC->ODR = 0x0; // 将该寄存器的位13置0【使PC13输出低电平,LED点亮】
}

编译,下载

现象:IO口测试灯上电后长亮

image-20250728215252004

posted @ 2025-07-29 01:29  LI,Yi-han  阅读(29)  评论(0)    收藏  举报