10、使用寄存器点亮一个LED
1.LED模块电路
2.STM32启动文件
3.编写点亮一个LED程序
1.LED模块电路
![](https://i-blog.csdnimg.cn/blog_migrate/4fc2c4460237ee505d8a550d2d610b2b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/26a533258cb98718ee1e9eb6d8d45baa.png)
2.STM32启动文件
对于启动文件这部分我们主要总结它的功能,不详细讲解
里面的代码,其功能如下:
初始化堆栈指针 SP;
初始化程序计数器指针 PC;
设置堆、栈的大小;
设置中断向量表的入口地址;
配置外部 SRAM 作为数据存储器(这个由用户配置,一
般的开发板可没有外部SRAM);
调用 SystemInit() 函数配置 STM32 的系统时钟。
设置 C 库的分支入口“ __main”(最终用来调用 main
函数) ;
3.编写控制LED程序
我们所要实现的功能是:点亮第一个LED,即D1指示灯亮
。
要操作STM32寄存器,我们就需要使用C语言对其封装,这
部分程序我们都放在stm32f10x.h中。
#define PERIPH_BASE ((unsigned int)0x40000000) #define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000) #define GPIOC_BASE (APB2PERIPH_BASE + 0x1000) #define GPIOC_CRL *(unsigned int*)(GPIOC_BASE+0x00) #define GPIOC_CRH *(unsigned int*)(GPIOC_BASE+0x04) #define GPIOC_IDR *(unsigned int*)(GPIOC_BASE+0x08) #define GPIOC_ODR *(unsigned int*)(GPIOC_BASE+0x0C) #define GPIOC_BSRR *(unsigned int*)(GPIOC_BASE+0x10) #define GPIOC_BRR *(unsigned int*)(GPIOC_BASE+0x14) #define GPIOC_LCKR *(unsigned int*)(GPIOC_BASE+0x18) #define AHBPERIPH_BASE (PERIPH_BASE + 0x20000) #define RCC_BASE (AHBPERIPH_BASE + 0x1000) #define RCC_APB2ENR *(unsigned int*)(RCC_BASE+0x18)