STM32学习笔记(2)- 软件keil5安装和新建工程

无人问津也好,技不如人也罢,都应静下心来,去做该做的事。

最近在学STM32,所以也开贴记录一下主要内容,省的过目即忘。视频教程为江科大(改名江协科技),网站jiangxiekeji.com

软件安装

keil5 MDK

 如果已经安装keil5 C51,可以放在同一个安装目录下,这样MDK和C51就可以共存。

 安装时间较久,耐心等待即可。

安装器件支持包

因为ARM芯片型号太多,可选择特定的支持包安装

新建工程-Software Packs(为STM32系列支持包)

新建工程-Legacy Device Database(为C51系列支持包)

离线安装

双击安装STM32F1XX即可

在线安装(拓展部分)

防止以后开发新的芯片找不到型号 

需联网,下载较慢

 国产芯片GD32F103C8

安装完后关掉整个界面即可

 然后新建工程选择对应的支持包就好。

软件注册

点击ADD LIC 

安装STLINK驱动 

 此电脑-右键-属性-设备管理器

说明电脑没有安装STLINK的驱动 

 双击对应的安装即可,设备管理器-通用串行总线  查看到ST-LINK就是安装好了

安装JLINK驱动

安装USB转串口驱动

这个USB转串口的芯片是CH340,和51单片机一样

 然后在设备管理器-端口-CH340表示安装成功。

新建工程

STM32程序编写分三种:

一是寄存器,和C51一样,直接对寄存器配置;

二是库函数,使用ST官方封装好的函数来间接配置寄存器。本教程使用此方法。

三是基于HAL库,用图形化界面快速配置STM32,能快速上手,但会对底层不了解。

以下为库函数的目录

下面开始新建库函数的工程

1、新建一个文件夹来存工程

如D:\software\STM32project

2、新建工程模板

打开keil5 - project - new uVision project -D:\software\STM32project - 新建文件夹(2-1 工程模板)- Project 

3、复制启动文件

D:\software\STM32入门教程资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 把这些启动文件复制到 2-1 工程模板 文件夹 的新建文件夹Start中

D:\software\STM32入门教程资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x的

stm32f10x.h文件是STM32的头文件、

两个system文件是用来配置时钟的,这三个文件同样复制到Start文件中。

4、内核寄存器的文件 

D:\software\STM32入门教程资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport的两个cm3文件也复制到Start文件夹

到这里,工程的必要文件已复制完成。

 5、添加启动文件到工程中

把project-target-Source Group 1的名称改为Start

添加启动文件,选中后点击add

 

 Start文件夹中的.c、.h文件都要添加进来。

这些都是STM32基础的、不需修改的文件。

6、工程选项添加头文件路径

 7、新建main函数

在2-1 工程模板文件夹中新建User文件夹

 插入头文件后,写个main空函数,最后一行要是空行,不然会有警告。

#include "stm32f10x.h"                  // Device header

int main(void)
{
	while(1)
	{
		
	}

}

 然后点击build按钮,编译并建造工程,显示0错误、0警告就说明新建工程成功。

CTRL+鼠标滚轮可缩放页面

点击扳手工具,选择UTF8,防止中文乱码;左下角TAP改为4

8、STLINK下载程序 

点击魔术棒-debug-选择STLINK下载

 点击settings

 确认后重新编译一次,无错误即可点击load,下载程序进STM32

9、新建Library

这里的步骤是为了使用库函数,需要做的一些操作。

在2-1 工程模板文件夹中新建Library文件夹

D:\software\STM32入门教程资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src中的文件都是库函数的源文件,把这些文件都复制到Library文件夹

D:\software\STM32入门教程资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\inc中的文件都是库函数的头文件,也把这些文件都复制到Library文件夹

回到keil5,同样在target右键,添加组Library,右键添加已存在的文件,打开Library,CTRL+A,ADD。

还需再添加一个文件才能使用库函数,D:\software\STM32入门教程资料\固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template的这三个文件复制到User文件夹中,并在keil5的User组中添加进来

还需要一个宏定义才能用库函数, 在stm32f10x.h中找到字符串(USE_STDPERIPH_DRIVER)复制,粘贴在魔术棒 - C/C++ - Define中,这样就可包含在库函数中。

同样,在魔术棒 - C/C++ - Include paths中添加User和Library的路径

点击三个箱子的按钮,可以移动target组的位置

 10、点灯

这里用PC13点亮STM32核心板上的灯为例子

#include "stm32f10x.h"                  // Device header

int main(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//配置时钟(选择外设,选择状态)
	GPIO_InitTypeDef GPIO_Initstructure;//定义GPIO结构体
	GPIO_Initstructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_Initstructure.GPIO_Pin = GPIO_Pin_13;
	GPIO_Initstructure.GPIO_Speed = GPIO_Speed_50MHz;
//	GPIO_SetBits(GPIOC,GPIO_Pin_13);//将PC13设为高电平
	GPIO_ResetBits(GPIOC,GPIO_Pin_13);//将PC13设为低电平
	GPIO_Init(GPIOC,&GPIO_Initstructure);//配置端口模式(选择哪个GPIO,参数的结构体)
	while(1)
	{
		
	}

}

11、新建工程步骤总结

 ​​​​​