视频选集(3/50)[2-2] 新建工程
注.当未烧录任何程序的前提下,STM32最小系统板上电后,出现现象:电源指示灯长亮,IO口测试灯不断闪烁。这是芯片里的一个测试程序
1. 器件
- STM32最小系统板
- 杜邦线(母对母)*4
- ST-LINK V2下载器
2. 实现目标
点亮开发板上的IO口测试灯
2. 创建工程文件
-
复制工程建立 - LI,Yi-han - 博客园一篇中创建的
2-1 STM32工程模板(寄存器开发)
文件,粘贴副本,重命名为2-2 点灯例程(寄存器开发)
文件 -
打开工程文件
-
最小系统板接上下载器,下载器通过USB口与PC主机连接
-
编译工程文件,点击下载
-
可见开发板上现象:电源灯依旧长亮,IO口测试灯熄灭、不再闪烁。这是由于该工程的主函数内只有一个空的死循环
3. 配置寄存器
IO口测试灯的对应引脚为PC13
由图可见该LED为低电平点亮
PC13是GPIOC端口的IO口
GPIOC挂载在APB2下
使用任何外设前,都要先使能时钟
3.1 APB2外设时钟使能寄存器RCC_APB2ENR
RCC->APB2ENR = 0x1<<4; // 将该寄存器的位4置1【开启GPIOC的时钟】
3.2 GPIOC端口配置高寄存器GPIOC_CRH
GPIOC->CRH = 0x3<<20; // 将该寄存器的位20、21置1【配置IO口-PC13:通用推挽输出模式,最大速度为50MHz】
3.3 GPIOC端口输出数据寄存器GPIOC_ODR
- 位13置1,则PC13引脚输出高电平
- 位13置0,则PC13引脚输出低电平
GPIOC->ODR = 0x0; // 将该寄存器的位13置0【使PC13输出低电平,LED点亮】
GPIOC->ODR = 0x1<<13; // 将该寄存器的位13置1【使PC13输出高电平,LED熄灭】
4. 程序
#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口测试灯上电后长亮