基于寄存器与基于固件库的stm32 LED流水灯例子
一、基于寄存器的stm32 LED流水灯程序
基于寄存器&基于固件库的stm32 LED流水灯例子的编程方式有什么差异
固件库:资料多,简单,易于理解。如果没有CortexM系列内核的开发基础,建议从固件库开始玩起。等有一定基础,再用寄存器。
寄存器:有更好的可移植性,学习寄存器编程会比较有帮助,程序运行占用资源少。
原理图如下
1. 创建一个keil工程(寄存器版)
- 打开keil,点击Project,选择New uVision Project
- 选择 CPU 型号,根据开发板进行选择
3.在线添加库文件
用寄存器控制 STM32 时,不需要在线添加库文件,可以直接关掉。
4.添加文件
①添加已经存在文件
在新建的工程中添加启动文件(startup_stm32f10x_hd.s),该文件可以先到固件库中复制到此处startup_stm32f10x_hd.s。
②创建新文件
stm32f10x.h
手动新建,用于存放寄存器映射的代码,暂时为空。
main.c
手动新建,用于存放 main 函数,暂时为空。
5.配置魔术棒选项卡
①Target设置
②Output设置
③Debug设置
2. 基于寄存器stm32 LED流水灯
1.寄存器的定义
寄存器的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。
2.GPIO (通用输入输出端口)
STM32 可控制的引脚。
实现代码
int main(void)
{
// 配置RCC寄存器,开启 GPIOC 端口时钟配置RCC寄存器
*(unsigned int *)0x40021