(三)Keil安装芯片包、下载固件库、建立STM32工程模板

目录

一、首先在Keil软件上安装好芯片包

二、下载官方固件库

三、建立基于固件库的Keil5工程模板


一、首先在Keil软件上安装好芯片包

        STM32有很多系列的芯片,我们平常用的最多的是STM32F1系列的,因此安装F1系列的芯片包在我们初学时,只按照人家下载好的来进行安装,现我们可以自行安装想要的系列的芯片包。以下就是关键步骤:

        ①打开Keil软件,点击红框中的魔术棒

        ②点击红框中的Device,可以看到我之前安装好的F1系列的芯片包,现我们手里的芯片不再是F1系列的芯片,想要开发F0系列的芯片,就需要安装F0系列的芯片包

        ③若想要安装F0或者F4系列的芯片包,点击红框中的地址链接,是keil的官网,去官网下载芯片包

        ④进入该界面

        该界面不是下载芯片包的界面,需要点击右上角的 CMSIS Packs 进入以下界面:

         ⑤下载方式有两种:

                (1)直接搜索你要的安装包,比如,在所搜框输入 STM32F0 点击搜索:

                (2)点击Vendor下拉框,选中Keil,右边的下拉框选择Devices,翻页就可以找到你想要下载的芯片包

        ⑥下载F0系列芯片包,点击下载,随便选择一个文件夹

        ⑦安装芯片包 ,找到下载好的芯片包,双击

        它会自动找到你的Keil所安装的目录底下,所以只需要点击next,就完成了芯片包的下载

        若此时你已经有一个打开的keil工程,点击关闭时,弹出是否要重新加载芯片包,点击确定,若此时你已经把Keil工程关闭了,只需要重新打开keil就可以看到,已经安装好你想要的芯片包了

二、下载官方固件库

        还是以上为例,想要STM32F0系列的固件库

                (1)登陆 ST 的官网:点击ST官网

                (2)点击红框,需要登陆该网站,若没有账号,可以自行注册,若看不懂英文,右上角可以切换为中文

        (3)登陆成功后,按照红框中依次点击 Products —> Microcontrollers&Microprocessors –> STM32 Mainstream MCUs

        (4)页面跳转后,看左侧,找打你要下载的固件库,例如,点击STM32F0x1

        (5)页面跳转后,点击 Tools & Software --> MCU & MPU Embedded Software

        (6)找到要下载的固件库,点击Open software page

         (7)页面跳转后,下滑,找到这里,点击 Get lastest

        (8)点击ACCEPT 就可以下载标准库

三、建立基于固件库的Keil5工程模板

        (1)在建立工程之前,建议用户在电脑的某个目录下面建立一个文件夹,后面所建立的工程都可以放在这个文件夹下面,这里我们建立一个文件夹为 Template。

        (2)打开 keil5 ,点击菜单:Project –>New Uvision Project 

                然后将目录定位到刚才建立的文件夹 Template 之下

                在这个目录下面建立子文件夹 USER(我们的代码工程文件都是放在 USER目录)

                然后定位到 USER 目录下面,我们的工程文件就都保存到 USER 文件夹下面。工程命名为Template,点击保存

        接下来会出现一个选择 CPU 的界面,就是选择我们的芯片型号。如图下图所示,根据我们自己的开发板型号,选择对应的芯片,以 STM32F103ZET6 为例,所以在这里我们选择
STMicroelectronics → STM32F1 Series→ STM32F103 →STM32F103ZET6(如果使用的是其他系列的芯片,选择相应的型号就可以了,特别注意:一定要安装对应的器件芯片包 pack 才会显示这些内容,如果没得选择,请参考上边的内容安装芯片包。

        (3)点击 OK,MDK 会弹出 Manage Run-Time Environment 对话框,如下图所示

                这是 MDK5 新增的一个功能,在这个界面,我们可以添加自己需要的组件,从而方便构建开发环境,不过这里我们不做介绍。所以,我们直接点击 Cancel,即可得到如下图所示界面:

                到这里,我们还只是建了一个框架,还需要添加启动代码,以及.c 文件等。

        (4)现在我们看看 USER 目录下面包含 2 个文件夹和 2 个文件,如下图所示:

                这里我们说明一下:

                Template.uvprojx 是工程文件,非常关键,不能轻易删除;

                Listings 和 Objects文件夹是 MDK 自动生成的文件夹,用于存放编译过程产生的中间文件。这里,我们把两个文件夹删除,我们会在下一步骤中新建一个 OBJ 文件夹,用来存放编译中间文件。当然,我们不删除这两个文件夹也是没有关系的,只是我们不用它而已。

        (5)接下来,我们在 Template 工程目录下面,新建 3 个文件夹 CORE,OBJ 以及
STM32F10x_FWLib。

                CORE 用来存放核心文件和启动文件;

                OBJ 是用来存放编译过程文件以及 hex 文件;

                STM32F10x_FWLib 文件夹顾名思义用来存放 ST 官方提供的库函数源码文件;

        已有的 USER 目录除了用来放工程文件外,还用来存放主函数文件 main.c,以及其他包括 system_stm32f10x.c 等等。

        (6)下面我们要将官方的固件库包里的源码文件复制到我们的工程目录文件夹下面。打开官方固件库包,定位到我们之前准备好的固件库包的目录:
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver 下面,将目录下面的src,inc 文件夹 copy 到我们刚才建立的 STM32F10x_FWLib 文件夹下面。src 存放的是固件的.c 文件,inc 存放的是对应的.h 文件,不妨打开这两个文件目录过目一下里面的文件,每个外设对应一个.c 文件和一个.h 头文件。

        (7)下面我们要将固件库包里面相关的启动文件复制到我们的工程目录 CORE 之下。打开官方固件库包,定位到目录:
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport 下面,将文件 core_cm3.c 和文件 core_cm3.h 复制到 CORE 下 面 去 。 然 后 定 位 到 目 录
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 下面,将里面 startup_stm32f10x_hd.s (若你的开发板是 C8T6这里选择startup_stm32f10x_md.s,若你的开发板是 RCT6这里选择startup_stm32f10x_hd.s)文件复制到 CORE 下面。这里我们我之前已经解释了不同容量的芯片使用不同的启动文件,我们的芯片STM32F103ZET6 是大容量芯片,所以选择这个启动文件。

FLASH容量:
STM32F103ZET6  512K     STM32F10X_HD
STM32F103RCT6  256K    STM32F10X_HD
STM32F103C8T6  64K       STM32F10X_MD

小容量:FLASH≤32K
中容量:64K≤FLASH≤128K
大容量:256K≤FLASH

                现在看看我们的 CORE 文件夹下面的文件: 

        (8)定位到目录:
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 下面将里面的三个文件 stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h,复制到我们的 USER目录之下。然后将STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template下面的 4 个 文件main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h 复制到 USER 目录下面。

        (9)前面 8 个步骤,我们将需要的固件库相关文件复制到了我们的工程目录下面,下面我们将这些文件加入我们的工程中去。右键点击 Target1,选择 Manage Project Items

        (10)Project Targets 一栏,我们将 Target 名字修改为 Template,然后在 Groups 一栏删掉一个 Source Group1,建立三个 Groups:USER,CORE,FWLIB。然后点击 OK,可以看到我们的 Target 名字以及 Groups 情况。

        (11)下面我们往 Group 里面添加我们需要的文件。我们按照步骤 10 的方法, 右键点击点击Tempate,选择选择 Manage Components。然后选择需要添加文件的 Group,这里第一步我们选 择 FWLIB , 然 后 点 击 右 边 的 Add Files,定 位 到 我 们 刚 才 建 立 的 目 录STM32F10x_FWLib/src 下面,将里面所有的文件选中(Ctrl+A),然后点击 Add,然后 Close。可以看到 Files 列表下面包含我们添加的文件。这里需要说明一下,对于我们写代码,如果我们只用到了其中的某个外设,我们就可以不用添加没有用到的外设的库文件。例如我只用 GPIO,我可以只用添加 stm32f10x_gpio.c 而其他的可以不用添加。这里我们全部添加进来是为了后面方便,不用每次添加,当然这样的坏处是工程太大,编译起来速度慢,用户可以自行选择。

                找到刚 才 建 立 的 目 录 STM32F10x_FWLib/src 下面

        (12)用同样的方法,将 Groups 定位到 CORE 和 USER 下面,添加需要的文件。这里我们的 CORE 下面需要添加的文件为 core_cm3.c,startup_stm32f10x_hd.s (注意,默认添加的时候文件类型为.c,也就是添加 startup_stm32f10x_hd.s 启动文件的时候,你需要选择文件类型为 All files 才能看得到这个文件),

                USER 目录下面需要添加的文件为 main.c,stm32f10x_it.c,system_stm32f10x.c. 

                这样我们需要添加的文件已经添加到我们的工程中了,最后点击 OK,回到工程主界面。

        (13)接下来我们要编译工程,在编译之前我们首先要选择编译中间文件编译后存放目录。方法是点击魔术棒,然后选择 “Output” 选项下面的 “Select folder for objects…”,然后选择目录为我们上面新建的 OBJ 目录。这里大家注意,如果我们不设置 Output 路径,那么默认的编译中间文件存放目录就是 MDK 自动生成的 Objects 目录和 Listings 目录。

                双击OBJ

                点击 OK

        (14)下面我们点击 编译 按钮 编译工程,可以看到很多报错,因为找不到头文件。

        (15)下面我们要告诉 MDK,在哪些路径之下搜索需要的头文件,也就是头文件目录。这里大家要注意,对于任何一个工程,我们都需要把工程中引用到的所有头文件的路径都包含到进来。回到工程主菜单,点击魔术棒 ,出来一个菜单,然后点击 c/c++选项,然后点击Include Paths 右边的按钮。弹出一个添加 path 的对话框,然后我们将图上面的 3 个目录添加进去。记住,keil 只会在一级目录查找,所以如果你的目录下面还有子目录,记得 path 一定要定位到最后一级子目录。然后点击 OK。

                需要往下点击出现蓝色条框,再点击右侧的虚线框,再次添加

        (16)接下来,我们再来编译工程,可以看到又报了很多同样的错误。为什么呢?这是因为 3.5 版本的库函数在配置和选择外设的时候通过宏定义来选择的,所以我们需要配置一个全局的宏定义变量。按照步骤 16,定位到 c/c++界面,然后填写
“STM32F10X_HD,USE_STDPERIPH_DRIVER”到 Define 输入框里面。这里解释一下,如果你用的是中容量那么 STM32F10X_HD 修改为 STM32F10X_MD,小容量修改为 STM32F10X_LD。然后点击 OK。

        STM32F103ZET6 选择 STM32F10X_HD

        STM32F103C8T6 选择 STM32F10X_MD

        (17)这次在编译之前,我们记得打开工程 USER 下面的 main.c,删除main.c底下的所有代码,复制下面代码到 main.c 中,然后进行编译。(记得在代码的最后面加上一个回车,否则会有警告),可以看到,这次编译已经成功了。

#include "stm32f10x.h"
void Delay(u32 count)
{
	u32 i=0;
	for(;i<count;i++);
}

int main(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);  //使能 PB,PE 端口时钟
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; 									//LED0-->PB.5 端口配置
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 							//推挽输出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;							//IO 口速度为 50MHz
	GPIO_Init(GPIOB, &GPIO_InitStructure); 										//初始化 GPIOB.5
	GPIO_SetBits(GPIOB,GPIO_Pin_5); 											//PB.5 输出高
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;									//LED1-->PE.5 推挽输出
	GPIO_Init(GPIOE, &GPIO_InitStructure); 										//初始化 GPIO
	GPIO_SetBits(GPIOE,GPIO_Pin_5); 											//PE.5 输出高
	while(1)
	{
		GPIO_ResetBits(GPIOB,GPIO_Pin_5);
		GPIO_SetBits(GPIOE,GPIO_Pin_5);
		Delay(3000000);
		GPIO_SetBits(GPIOB,GPIO_Pin_5);
		GPIO_ResetBits(GPIOE,GPIO_Pin_5);
		Delay(3000000);
	}
}

        (18) 这样一个工程模版建立完毕。下面还需要配置,让编译之后能够生成 hex 文件。同样点击魔术棒,进入配置菜单,选择 Output。然后勾上下三个选项。 其中 Create HEX file 是编译生成 hex 文件,Browser Information 是可以查看变量和函数定义。

        (19)重新编译代码,可以看到生成了 hex 文件在 OBJ 目录下面,这个文件我们用 flymcu 下载到 mcu 即可。到这里,一个基于固件库 V3.5 的工程模板就建立了。

        (20)实际上经过前面 19 个步骤,我们的工程模板已经建立完成。但是正点原子提供的实验中,每个实验都有一个 SYSTEM 文件夹,下面有 3 个子目录分别为 sys,usart,delay,存放的是我们每个实验都要使用到的共用代码,该代码是由正点原子编写,我们这里只是引入到工程中,方便后面的实验建立工程。随便找一个正点原子的工程文件,把底下的 SYSTEM 文件夹拷贝到我们自己建的Template文件下。

        打开 SYSTEM 文件夹可以看到三个文件里面有三个子文件夹分别为delay,sys,usart,每个子文件夹下面都有相应的.c 文件和.h 文件。我们接下来要将这三个目录下面的代码加入到我们工程中去。

        用我们之前讲解步骤 13 的办法,在工程中新建一个组,命名为 SYSTEM,然后加入这三
个文件夹下面的.c 文件分别为 sys.c,delay.c,usart.c,如下图:

        然后点击“OK”之后可以看到工程中多了一个 SYSTEM 组,下面有 3 个.c 文件。

        接下来我们将对应的三个目录(sys,usart,delay)加入到 PATH 中去,因为每个目录下面都有相应的.h 头文件,这请参考步骤 15 即可,加入后的截图是:

        最后点击 OK。这样我们的工程模板就彻底完成了,这样我们就可以调用正点原子提供的
SYSTEM 文件夹里面的函数。到这里,可以参考我根据以上步骤建立好的 STM32F103ZET6 工程模板:STM32F103ZET6 工程模板

  • 16
    点赞
  • 165
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 要下载STM32F103固件工程模板,您可以按照以下步骤进行操作: 1. 打开ST官方网站,进入STM32F103固件下载页面。 2. 在页面上找到适用于STM32F103系列固件工程模板下载链接。 3. 点击下载链接,将固件工程模板文件保存到您的电脑中。 4. 解压下载的压缩文件,您将得到一个固件工程文件的文件夹。 5. 打开您习惯使用的开发环境(如Keil、IAR等)。 6. 在开发环境中打开该文件夹中的工程文件。 7. 检查并配置开发环境中的编译器、烧录器和目标板等设置,确保与您的硬件平台相匹配。 8. 编译并生成可执行文件。 9. 将生成的可执行文件烧录到您的STM32F103系列目标板上。 10. 运行目标板,在开发环境中进行调试和测试。 需要注意的是,确保您使用的是适用于STM32F103系列固件工程模板,并根据具体硬件平台的需求进行相应的配置。此外,下载和使用STM32F103固件工程模板时,可以参考官方提供的文档和示例代码,以便更好地理解和使用该固件。 ### 回答2: 您可以通过以下方式下载STM32F103固件工程模板: 1. 官方网站下载:您可以访问STMicroelectronics(意法半导体)官方网站,在其支持页面中找到STM32F103固件工程模板下载链接。您可以根据您的需求选择合适的版本下载。 2. 第方网站下载:除了官方网站,您还可以在一些第方网站上找到和下载STM32F103固件工程模板。这些网站也提供了丰富的资源,您可以根据自己的需求选择合适的版本下载。 3. 使用开发工具自带的模板:许多常见的开发工具,如Keil、IAR等,都提供了STM32F103固件工程模板。您可以打开开发工具并选择适当的模板进行下载和使用。 无论您选择哪种方式下载STM32F103固件工程模板,请确保文件的完整性和合法性。在使用模板之前,建议您仔细阅读相关文档和指南,以确保正确配置和使用该模板。希望这些信息对您有帮助,祝您顺利完成STM32F103固件下载和开发工程。 ### 回答3: 要下载STM32F103固件工程模板,可以按照如下步骤进行操作。首先,打开STMicroelectronics官方网站。在官方网站的搜索栏中,输入“STM32F103固件工程模板”进行搜索。通常,官方网站会有一个专门的页面或资源,提供各种STM32系列固件工程模板。 在搜索结果中,找到适用于STM32F103的固件工程模板,并点击下载按钮。下载过程可能需要登录或注册账号,根据提示进行操作。一旦下载完成,解压缩文件。在解压缩后的文件夹中,你会找到工程模板的各个文件和文件夹。 打开工程模板的主文件,通常是一个以.c或者.cpp为扩展名的文件。该文件中含了基本的配置和初始化函数。根据工程的需求,可以在主文件中进行必要的修改,例如添加新的功能、配置引脚、设置时钟等。 在工程文件夹中,还会含其他一些文件和文件夹,例如头文件、链接脚本文件、启动文件等。这些文件是用于编译和烧录固件的重要组成部分。根据需要,可以在这些文件中进行相关的配置和修改。确保工程的各个文件和文件夹都被正确地含在工程中。 此外,一些工程模板也提供了示例代码,可以作为参考使用。这些示例代码演示了一些常见的功能和用法,有助于理解和学习STM32F103的应用。 总之,通过以上步骤,你可以成功下载STM32F103固件工程模板,并根据需要进行修改和使用。参考工程模板和示例代码,可以为你的STM32F103开发提供有力的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值