tips:STM32的开发方式
基于寄存器的方式,直接对寄存器进行操作
基于标准库的方式(ST官方封装库函数)
基于HAL库的方式(图形化界面配置)
1.创建工程模板(基于寄存器开发)
创建工程模板需要复制一些固件库中的文件
1.固件库的文件结构
Libraries:库函数文件夹
Project:官方提供的工程示例和模板
Utilities:官方提供的小电路板的测试程序
Release_Notes.html:发布文档
stm32f10x_stdperiph_lib_um.chm:使用手册
2.新建工程
1.1Project——New uVision Project
1.2选择保存路径,工程创建后会有一系列文件和文件夹,应存放在子文件夹内
1.3根据芯片选择对应的型号
3.配置工程
1.启动文件和主函数
1.配置工程文件夹
在工程文件夹中新建两个子文件夹,分别为Start、User
Start中存放的文件目录如图所示:
启动文件的选择
如上图所示,文件夹中包含多个启动文件,根据开发板型号进行选择
本开发板选择后缀为MD的启动文件
User里存放自己编写的程序,如main.c
注意最后一行为空行,否则会有一个warning
2.文件在固件库中的位置
start_xxxx:
D:\QIMABlue\Program\STM32\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm
stm32f10x.h&system_stm32f10x:
D:\QIMABlue\Program\STM32\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x
core_cm3:
D:\QIMABlue\Program\STM32\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport
2.软件配置
1.在工程中创建两个group,并添加对应文件
2.在option for target中添加头文件路径
3.选择编译器
通常情况下需要对5.06版本进行额外安装
《 Arm Compiler 5.06 》__ARM编译器官网下载、安装和使用说明(小白也能懂)-CSDN博客
配置结束后,使用build进行编译
如果能正常编译,没有报错,则工程配置成功。
3.软件个性化设置
1.字体大小调整
2.编码格式以及Tab缩进调整
上述模板即可实现基于寄存器进行开发
2.【实验】基于寄存器的点灯
目的:点亮板子上的一个小灯,端口为PC13
1.硬件连接
STLINK与STM32的硬件连接
2.软件配置
勾选Reset and Run,作用为当程序下载进去后,立即运行程序
下载程序,进行验证
3.LED灯相关寄存器
我们对PC13进行配置,使得LED灯点亮
1.配置RCC时钟,使能GPIOC的时钟
GPIOC挂载在APB2总线上,所以需要配置RCC_APB2ENR寄存器
IOPCEN:IO端口C时钟使能,置1打开GPIOC的时钟
2.GPIOC13端口模式配置
3.配置端口输出
控制端口的输出
4.实验代码+现象
#include "stm32f10x.h"
#include <stdio.h>
int main(void)
{
RCC->APB2ENR=0x00000010;
GPIOC->CRH=0x00300000;
GPIOC->ODR=0x00002000;//端口输出1,灯灭
GPIOC->ODR=0x00000000;//端口输出0,灯亮
while (1)
{
}
}
3.模板新增库函数(基于标准库开发)
调用STM32的标准库函数进行开发更加便捷,需要对工程进行额外的配置
在工程基础上添加库文件:分为Library文件和配置文件(stm32f10x_conf.h、stm32f10x_it)
1.软件工程结构
2.本地文件结构
更新Library和User文件夹
3.新增文件在固件库中的位置
Library(库函数文件):包含了STM32芯片以及外设的库函数文件
D:\QIMABlue\Program\STM32\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver
配置文件:
D:\QIMABlue\Program\STM32\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template
4.软件配置
1.包含头文件
包含库函数文件和配置文件中的头文件,即包含Library、User
2.定义define
只有进行定义,才可以包含配置文件
USE_STDPERIPH_DRIVER
之前看的另一种构建工程模板的文章,有兴趣可以看一下
参考:用keil5新建STM32工程(超详细的图解操作)_keil5新建stm32工程步骤-CSDN博客
5.工程架构
4.【实验】基于标准库点灯
1.配置时钟
2.创建结构体对象:端口模式、端口号、端口速度
3.端口模式为推挽输出,端口号为13,速度为13MHz,配置好后然后初始化
4.设置端口状态
#include "stm32f10x.h"
#include <stdio.h>
int main(void)
{
//配置时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
//配置端口模式
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
//端口赋值
GPIO_SetBits(GPIOC, GPIO_Pin_13);
// GPIO_ResetBits(GPIOC, GPIO_Pin_13);
while (1)
{
}
}
通过跳转和搜索的方式,对函数的功能和输入的参数进行了解