前言
你需要有一台电脑,其次需要安装keil5并配置好相应的环境,还需要安装f10x系列的芯片包,最好有一块stm32f103c8t6最小系统板。你只需跟着本文一遍就能搭建好工程
一、创建工程目录
在创建工程目录前你需要在
STSW-STM32054 - STM32F10x标准外设库 - 意法半导体STMicroelectronics
ST官网中下载固件库
也可以从下面这个链接获取
链接:https://pan.baidu.com/s/1gPC4QF_P8fdLC7GwQA33qg?pwd=8lrz
提取码:8lrz
获取后将其解压即可。
1.创建工程
你需要创建如下6个文件
CORE:该文件通常包含与STM32微控制器核心相关的文件,这对于微控制器的启动和运行至关重要
HARDWARE:存放与硬件相关的代码,这些代码可能包括用于链接芯片与其他外部设备的驱动
OBJ:用于存放编译过程中产生的中间文件
STM32F10x_FWLib:该文件包含微控制器的外设驱动程序,系统服务函数以及其他必要的库函数
SYSTEM:包含一系列用于系统初始化和配置的源代码文件(用户编写的代码)
USER:主要用于存放用户编写的源代码,通常包含主函数main,c、系统初始化文件system_stm32f10x.c等以及其他用户自定义的源代码
2.固件库移植
创建好上面的文件后就开始将固件库移植到其中
只需要移植三个主要的文件
(1)CORE
首先将解压后的固件库
...\en.stsw-stm32054_v3-6-0\STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\CoreSupport路径下的
core_cm3.c
core_cm3.h
复制到CORE中
再将...\en.stsw-stm32054_v3-6-0\STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm路径下的
startup_stm32f10x_md.s
复制到CORE中
该路径下的文件是芯片容量大小的文件,可以去ST官网自己查询
(2)STM32F10x_FWLib
完成后再将...\en.stsw-stm32054_v3-6-0\STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\STM32F10x_StdPeriph_Driver路径下的
src文件
inc文件
复制到STM32F10x_FWLib文件中
(3)USER
最后将...\en.stsw-stm32054_v3-6-0\STM32F10x_StdPeriph_Lib_V3.6.0\Project\STM32F10x_StdPeriph_Template路径下的
main.c
stm32f10x_conf.h
stm32f10x_it.c
stm32f10x_it.h
system_stm32f10x.c
5个文件复制到USER中
再将...\en.stsw-stm32054_v3-6-0\STM32F10x_StdPeriph_Lib_V3.6.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x路径下的
stm32f10x.h
system_stm32f10x.h
复制到USER中
至此就将固件库移植到了工程中
二、新建Keil工程
1.打开keil
2.点击Project---->New μVison Project...
3.选择路径为...\STM32工程\USER
我这里的文件名是SmartHome
4.选择芯片
直接在Search中搜索自己开发板的芯片,我用的是stm32f103c8t6最小系统板
点击OK,随后会弹出弹窗,直接Cancel(关闭)
三、创建Groups
1.打开keil右击Target1--->Manage Project Items...
2.点击Groups后面的虚线方框(New(insert))创建USER、CORE、STM32F10x_FWLib
3.将工程中对应的文件添加到分组中
(1)将工程文件中USER下的
main.c
stm32f10x_it.c
system_stm32f10x.c
3个文件添加到USER分组中
(2)将工程文件CORE中的
core_cm3.c
startup_stm32f10x_md.s
2文件添加到CORE分组中
(3)最后将STM32F10x_FWLib下src中的
所有(共23个)文件
添加到STM32F10x_FWLib分组中
4.完成后点击OK
四、设置头文件路径
1.头文件目录路径设置
点击Options for Target...(魔术棒)--->c/c++--->include Paths
添加完成如下
2.编译
在编译之前需要将main.c中的内容替换为以下代码
#include "stm32f10x.h"
int main(void)
{
}
这个时候就可以编译了
编译完发现报错如下
大概意思是assert_param没被定义
追根究底是没有定义宏USE_STDPERIPH_DRIVER
解决方法:
在C/C++中定义USE_STDPERIPH_DRIVER
这个时候再编译,0报错、0警告
3.设置输出文件位置
双击OBJ,然后点击OK
五、点亮LED
main.c函数代码如下
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能C端口时钟
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //初始化GPIOC
GPIO_SetBits(GPIOC,GPIO_Pin_13);
}
int main(void)
{
LED_Init();
GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET);//拉低,点亮LED
while (1)
{
}
}
你还需要设置下载器如下
最后编译下载
结果如下
LED成功点亮
总结
创建工程的大概流程就是创建6个文件分别是USER、CORE、STM32F10x_FWLib、HARDWAER、SYSTEM、OBJ
随后就是固件库移植
最后就是创建keil工程,创建分组,添加工程文件,设置头文件目录
你会发现HARDWARE、SYSTEM没有用到,不过不要急,会用到的,这叫未雨绸缪