英文版网站建设方案,北京市建设监理协会网站,滁州网站建设hi444,佛山市品牌网站建设多少钱目录 一、首先在Keil软件上安装好芯片包
二、下载官方固件库
三、建立基于固件库的Keil5工程模板 一、首先在Keil软件上安装好芯片包 STM32有很多系列的芯片#xff0c;我们平常用的最多的是STM32F1系列的#xff0c;因此安装F1系列的芯片包在我们初学时#xff0c;只按照…目录 一、首先在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 — MicrocontrollersMicroprocessors – 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点击 OKMDK 会弹出 Manage Run-Time Environment 对话框如下图所示 这是 MDK5 新增的一个功能在这个界面我们可以添加自己需要的组件从而方便构建 开发环境不过这里我们不做介绍。所以我们直接点击 Cancel即可得到如下图所示界面 到这里我们还只是建了一个框架还需要添加启动代码以及.c 文件等。
4现在我们看看 USER 目录下面包含 2 个文件夹和 2 个文件如下图所示 这里我们说明一下
Template.uvprojx 是工程文件非常关键不能轻易删除
Listings 和 Objects文件夹是 MDK 自动生成的文件夹用于存放编译过程产生的中间文件。这里我们把两个文件夹删除我们会在下一步骤中新建一个 OBJ 文件夹用来存放编译中间文件。当然我们不删除这两个文件夹也是没有关系的只是我们不用它而已。
5接下来我们在 Template 工程目录下面新建 3 个文件夹 COREOBJ 以 及 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 下面 将目录下面的 srcinc 文件夹 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.hsystem_stm32f10x.csystem_stm32f10x.h复制到我们的 USER目录之下。然后将 STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 下面的 4 个 文件 main.cstm32f10x_conf.hstm32f10x_it.cstm32f10x_it.h 复制到 USER 目录下面。 9前面 8 个步骤我们将需要的固件库相关文件复制到了我们的工程目录下面下面我们将 这些文件加入我们的工程中去。右键点击 Target1选择 Manage Project Items 10Project Targets 一栏我们将 Target 名字修改为 Template然后在 Groups 一栏删掉一个 Source Group1建立三个 GroupsUSERCOREFWLIB。然后点击 OK可以看到我们的 Target 名字以及 Groups 情况。 (11)下面我们往 Group 里面添加我们需要的文件。我们按照步骤 10 的方法 右键点击点击 Tempate选择选择 Manage Components。然后选择需要添加文件的 Group这里第一步我们 选 择 FWLIB 然 后 点 击 右 边 的 Add Files定 位 到 我 们 刚 才 建 立 的 目 录 STM32F10x_FWLib/src 下面将里面所有的文件选中(CtrlA)然后点击 Add然后 Close。 可以看到 Files 列表下面包含我们添加的文件。 这里需要说明一下对于我们写代码如果我们只用到了其中的某个外设我们就可以不 用添加没有用到的外设的库文件。例如我只用 GPIO我可以只用添加 stm32f10x_gpio.c 而 其他的可以不用添加。这里我们全部添加进来是为了后面方便不用每次添加当然这样 的坏处是工程太大编译起来速度慢用户可以自行选择。 找到刚 才 建 立 的 目 录 STM32F10x_FWLib/src 下面 12用同样的方法将 Groups 定位到 CORE 和 USER 下面添加需要的文件。这里 我们的 CORE 下面需要添加的文件为 core_cm3.cstartup_stm32f10x_hd.s (注意默认添加的 时候文件类型为.c也就是添加 startup_stm32f10x_hd.s 启动文件的时候你需要选择文件类型 为 All files 才能看得到这个文件) USER 目录下面需要添加的文件为 main.cstm32f10x_it.csystem_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 i0;for(;icount;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 口速度为 50MHzGPIO_Init(GPIOB, GPIO_InitStructure); //初始化 GPIOB.5GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB.5 输出高GPIO_InitStructure.GPIO_Pin GPIO_Pin_5; //LED1--PE.5 推挽输出GPIO_Init(GPIOE, GPIO_InitStructure); //初始化 GPIOGPIO_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 个子目录分别为 sysusartdelay存放的是我们每个实验都要使用到的共用代码该代码是由正点原子编写我们这里只是引入到工程中方便后面的实验建立工程。随便找一个正点原子的工程文件把底下的 SYSTEM 文件夹拷贝到我们自己建的Template文件下。 打开 SYSTEM 文件夹可以看到三个文件里面有三个子文件夹分别为delaysysusart每个子文件夹下面都有相应的.c 文件和.h 文件。我们接下来要将这三个目录下面的代码加入到我们工程中去。
用我们之前讲解步骤 13 的办法在工程中新建一个组命名为 SYSTEM然后加入这三 个文件夹下面的.c 文件分别为 sys.cdelay.cusart.c如下图 然后点击“OK”之后可以看到工程中多了一个 SYSTEM 组下面有 3 个.c 文件。 接下来我们将对应的三个目录sysusartdelay加入到 PATH 中去因为每个目录下面都有相应的.h 头文件这请参考步骤 15 即可加入后的截图是 最后点击 OK。这样我们的工程模板就彻底完成了这样我们就可以调用正点原子提供的 SYSTEM 文件夹里面的函数。到这里可以参考我根据以上步骤建立好的 STM32F103ZET6 工程模板STM32F103ZET6 工程模板