STM32基础教程–创建一个STM32工程(基于STM32F103C8T6)

目录

前言

技术实现

1. 安装器件包

2.工程创建 

3.软件破解 

4.配置必要文件 

​编辑5.文件添加 

6.路径添加

7.添加 USE_STDPERIPH_DRIVER定义

8.选择下载器并设置

9.程序下载

10.代码规范 

代码验证

实验现象 

问题与解决 


前言

        STM32是由意法半导体(STMicroelectronics)推出的基于ARM Cortex-M内核的32位微控制器系列。该系列微控制器具有高性能、低功耗、低成本等特点,集成了丰富的外设接口,如通用输入输出端口(GPIO)、串行通信接口(USART、SPI、I2C)、模数转换器(ADC)等。STM32广泛应用于工业控制、消费电子、汽车电子、医疗设备、智能家居等嵌入式系统领域。意法半导体为STM32提供了完善的开发工具和软件生态系统,包括STM32CubeMX、STM32CubeIDE等,简化了开发流程,提高了开发效率。

技术实现

1. 安装器件包

1.在创建工程之前我们要安装STM32芯片的器件包,打开keil5 MDK, 点击这个图标(如图所示)

2.等待列表更新完毕后, 在左侧会出现一系列STM32芯片的制造厂商。

3.找到名为 STMicroelectronics的厂商即意法半导体,点击”+“,找到“STM32F2”系列,再点击STM32F205系列,找到STM32F205RB, 再右侧找到Device Specific( 此处以STM32F205RB 为例,因为我已经在之前安装好了)

4.点击install下载 DFP文件,等待下载完毕问哦们的器件包就下载好了

2.工程创建 

1.创建一个文件夹,用于存放你写的所有工程,我们这里将其命名为”stm32编程“

2.为你要建立的工程单独建立一个文件夹,我们暂时将其命名为"test" 。在我们创建一个具体项目时,最好将这个文件夹命名为一个能概括你的项目内容的名称,例如:LED闪烁。

3.打开keil5 MDK,点击Project.

4.点击New uVision Project

 5.进入刚刚创建的文件夹,将工程名命名为"Project",点击保存。

6.然后就会出现一个窗口选择芯片,点击STMicroelectronics展开,然后再点击STM32F2 Series

7.选择STM32F103C8,点击OK,我们就选择芯片完成了,随后出现的窗口关闭即可,工程创建完毕

3.软件破解 

 1.开始Keil软件注册,右击图标选择以管理员身份运行,点击Lience Mangement。

2.Customer Infomation部分随便填写,然后在右侧Cumpoter ID部分点击Git LIC via internet.

 3.打开破解机,将复制的内容填入CID,Target 选择ARM,点击Generate,复制生成的内容。

4.将复制的LIC 粘贴至如图所示的位置,点击Add LIC,如果破解成功,则中间表格中会出现Project为MDK-ARM Plus,Lience ID Code 为你刚才复制的内容的信息。

 5.弄好后,我们的界面是一个文件也没有的

4.配置必要文件 

1.打开工程文件,我们创建一个名为Start的文件,里面存放STM32的启动文件(从官方固件库获得)。

 

2.点击Source Group1,然后单击将命名改为Start,右击,选择Add Exiciting file to….,将文件类型改为All Files ,要添加以md.s结尾的文件,其余的.c和.h 文件均要添加进来。

3.再返回我们创建的工程文件,创建一个名为Library的文件,用于存放库函数文件(官方固件库中获得) 

4.同上,右击Target1, 选择Add Group,并将其命名为Library,同样,将工程文件中Library中的所有文件添加进来。

6.至此,我们已经创建好了STM32 的启动函数文件和库函数文件,接下来还要添加一个conf(文件名结尾为conf。下同)文件用于包含所有头文件以及两个it文件(官方固件库中获得)。我们再在工程文件中创建一个名为哦User的文件。将这三个文件复制进去。

5.文件添加 

1.同上在Keil中创建一个User组,将这些文件添加进去。

6.路径添加

1.添加路径。点击“魔法棒”。

 点击C/C++,找到Include Paths,点击右侧三个点,点击New

再点击右侧按键, 将User,Start,Library ,将三个文件的路径都添加进来。点击OK,关闭所有窗口。

7.添加 USE_STDPERIPH_DRIVER定义

1.在User文件加中创建main.c文件,使用#include包含头文件

4.选中头文件的名称,右击,点击Open Documents "stm32f10x.h"

26.在第8346行找到这部分代码

#ifdef USE_STDPERIPH_DRIVER
  #include "stm32f10x_conf.h"
#endif

将USE_STDPERIPH_DRIVER复制,然后点击“魔法棒”,点击C/C++界面,将其粘贴至Define

,这部分操作完毕 ,目的是定义USE_STDPERIPH_DRIVER使程序包含stm32f10x_conf.h头文件。

8.选择下载器并设置

1.接着点击Debug界面,点击右侧Use列表选择STLink(我们使用STLink下载程序)

2.点击Setting,点击Flash Download界面,在Download Function中勾选Rset and Run,点击”确定“,点击OK,我们设置完毕。

9.程序下载

1.编译,程序在写完后应点击编译图标编译一下

2.下载。点击下载按钮,程序通过ST-link 自动下载

10.代码规范 

1.主函数

主函数的返回值必须为int型,但程序不需要再最后添加类似于return 0; 的语句。参数列表为空

2.整个程序文件的最后一行必须为空行,不能有任何文字

代码验证

/*使用库函数电灯操作*/
#include <stm32f10x.h>	/*stm32头文件*/

/*
	主函数返回值为int型,参数列表为空
*/
int main(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);			//APB2外设时钟配置
	/*
		APB2外设时钟设置应放在GPIO_InitStruct结构体定义之前
	*/
	
	GPIO_InitTypeDef GPIO_InitStruct;								//定义结构体
	/*
		结构体初始化
	*/
	GPIO_InitStruct.GPIO_Mode =	GPIO_Mode_Out_PP;					//通用推挽输出
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;							//选择PC13引脚
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;					//选择GPIO口的速度
	
	GPIO_Init(GPIOC,&GPIO_InitStruct);								//GPIO_Init()函数的第二个参数为指向结构体指针,此处应将结构体的地址传递给它
//	GPIO_SetBits(GPIOC,GPIO_Pin_13);								//将PC13口设置为高电平
	GPIO_ResetBits(GPIOC,GPIO_Pin_13);								//将PC13口设置为低电平
	while(1);
}
/*文件最后一行必须为空行*/

此时最小系统板的与PC13相连的LED应为点亮状态

/*使用库函数电灯操作*/
#include <stm32f10x.h>	/*stm32头文件*/

/*
	主函数返回值为int型,参数列表为空
*/
int main(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);			//APB2外设时钟配置
	/*
		APB2外设时钟设置应放在GPIO_InitStruct结构体定义之前
	*/
	
	GPIO_InitTypeDef GPIO_InitStruct;								//定义结构体
	/*
		结构体初始化
	*/
	GPIO_InitStruct.GPIO_Mode =	GPIO_Mode_Out_PP;					//通用推挽输出
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;							//选择PC13引脚
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;					//选择GPIO口的速度
	
	GPIO_Init(GPIOC,&GPIO_InitStruct);								//GPIO_Init()函数的第二个参数为指向结构体指针,此处应将结构体的地址传递给它
	GPIO_SetBits(GPIOC,GPIO_Pin_13);								//将PC13口设置为高电平
//	GPIO_ResetBits(GPIOC,GPIO_Pin_13);								//将PC13口设置为低电平
	while(1);
}
/*文件最后一行必须为空行*/

 此时最小系统板的与PC13相连的LED应为熄灭状态

实验现象 

问题与解决 

1.若出现如下错误提示

说明缺少core_cm3.h文件。

解决方法:   在Start文件夹中复制core_cm3.h文件,将其粘贴\keil5\ARM\PACK\Keil\STM32F1xx_DFP\2.4.1\Device\Include路径下。再次编译,即可解决问题。

作者:Czzzzlq

物联沃分享整理
物联沃-IOTWORD物联网 » STM32基础教程–创建一个STM32工程(基于STM32F103C8T6)

发表回复