无人问津也好,技不如人也罢,都应静下心来,去做该做的事。
最近在学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 headerint 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 headerint 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、新建工程步骤总结