STM32寄存器编程的开发思路(以GPIO端口点亮LED灯为例)
一、利用keil软件搭建工程
(PP:推挽模式、OD:开漏模式、PU:上拉模式、PD:下拉模式)
- 建立工程,新建工程目录并保存
- 设置STM32开发环境
- 利用参考手册以及原理图进行寄存器编程,编写程序代码
- 注:在使用一个外设之前,必须设置寄存器RCC_AHBENR来打开该外设的时钟。
- 搭建好工程项目之后,利用STM32烧录程序ST-Link进行烧录将代码烧录(debug)进单片机中。
- 注:需要在cubemx软件以及keil软件中设置好烧录程序ST-Link的设置
-
二、软件开发的步骤
- 以使用GPIOB 0端口实现LED灯亮色为例
- 注:所有的基地址与偏移都是在参考手册上查阅的
- 更改代码,令LED灯改变颜色
-
三、关于GPIO软件开发的详细步骤——基于寄存器编程
- 查阅开发板的参考手册;
- 找到GPIO外设是挂载在哪一条总线上(在储存器映射章节中查找);
- 接着在RCC寄存器章节找到②总线的外设时钟使能寄存器;
- 通过查阅通用端口(GPIO)章节配置所需要的工作模式以及相对应模式下的配置方法;
- 在第④点确认好所需要的工作模式之后,再通过查阅GPIO寄存器——端口位配置表这一节查找在这一工作模式下需要配置哪些内容;
- 按照顺序逐步配置跟编写端口相关程序代码。
-
四、不同开发板子GPIO软件开发的区别——基于寄存器编程
- 在 F1系列上,GPIO 外设的一些属性如: 输入输出的模式、IO翻转速度以及推挽开漏功能是通过端口配置寄存器配置。
- 在F4-H7 系列上,就有单独的各种寄存器来配置。
-
五、补充
-
寄存器编程较为繁琐,C语言指针的方式是直接利用指针进行内容位进行操作的,因此代码的可读性不强且需要大量备注以及二次开发难度较大,可采用库编程的软件开发思路进行编程,再结合寄存器编程对代码进行优化!