前言
STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex®-M0,M0+,M3, M4和M7内核,按内核架构分为不同产品:
主流产品(STM32F0、STM32F1、STM32F3)、超低功耗产品(STM32L0、STM32L1、STM32L4、STM32L4+)、高性能产品(STM32F2、STM32F4、STM32F7、STM32H7),本文主要针对主流产品STM32F1产品讲解如何在MDK集成开发环境创建一个工程并且移植ST标准库,后续文章将会讲解移植FreeRTOS并且介绍FreeRTOS嵌入式实时系统的工作原理,使其运用于实际产品开发中。
一、 集成开发工具安装与STM32F1标准库下载
1、本文将需要用到MDK集成开发工具,下面链接的文章从Keil工具的下载到安装和破解都讲解的比较详细,还没有此工具的读者可以参考以下链接。
2、STM32F10x_StdPeriph_Lib下载,请参考下面链接的文章去获取STM32F1标准库,本文已下载好STSW-STM32F054型号库。如图1所示。
图1
二、 基于MDK创建工程
1、 创建一个工程文件夹,并且在文件夹里创建三个文件夹并分别以CORE、STM32F10X_LIB、USER命名。
2、 将STM32F10x_StdPeriph_Lib_V3.5.0里跟内核相关的几个文件(core_cm3.c/core_cm3.h、startup_stm32f10x_hd.s、stm32f10x.h、system_stm32f10x.c/system_stm32f10x.h)拷贝到CORE文件目录里,几个文件路径如图2、图3、图4所示。
图2
图3
图4
3、 将STM32F10x_StdPeriph_Lib_V3.5.0里的库函数文件拷贝到STM32F10X_LIB文件夹里,文件夹路径如图5所示。
图5
4、 打开keil软件,依次点击菜单栏里的Project->New uVision Project,命名工程名称,这里的工程名称为“MDK工程创建”并保存在前面新建的文件夹USER里,如图6所示。
图6
5、 选择芯片型号,由于我们是基于F1系列产品的STM32F103ZE进行创建工程,所以我们选择STMicroelectronics->STM32F1 Series->STM32F103->STM32F103ZE如图7所示。
图7
6、 往工程添加分组,这里主要三个分组,分别为USER、CORE、LIB,并往CORE添加core_cm3.c、startup_stm32f10x_hd.s、system_stm32f10x.c等与内核相关文件,往LIB添加STM32F10X_LIBsrc里的库文件,具体步骤见图8、图9所示。
图8
图9
7、 添加宏定义及头文件路径,具体步骤见图10,图11。
图10
图11
8、 创建一个main.c文件,里面可以很简单的创建一个main函数并将该文件保存在USER目录下,并添加进USER组里分别如图12、图13所示
图12
图13
9、 开始编译,编译结果如图14所示,从编译结果看没有报错,这意味着整个工程已创建成功
图14
10、 我们继续完善main.c当然可以自己添加进代码,由于做演示,这里拷贝一段点亮LED的代码进去,并且再次进行编译,此时编译通过。
#include "stm32f10x.h"
/********************************************************
函数名:void LED_Init(void)
功能描述:灯端口初始化
被调用函数清单:
调用本函数清单:
被访问的表:
被修改的表:
输入参数:
输出参数:
返回值:
其它说明:
********************************************************/
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE); //使能PB,PE端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED-->PE.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOE, &GPIO_InitStructure);
GPIO_ResetBits(GPIOE,GPIO_Pin_5); //PE.5 输出高
}
int main( void )
{
LED_Init();
while(1)
{
;
}
}
11、 烧录进MCU配置,这里使用J-LINK进行烧录见图15,当然需要添加芯片见图16
图15
图16
12、 下载程序只需执行F8键或者点击菜单栏上的Load图标即可,讲解到这里基本整个工程已经创建成功了。
最后感谢您的阅读,如果阅读本文章过程中有疑惑或者文章有纰漏的地方欢迎评论区留言!