新手入门使用KEIL进行STM32程序开发

您所在的位置:网站首页 keil5运行 新手入门使用KEIL进行STM32程序开发

新手入门使用KEIL进行STM32程序开发

2023-04-02 20:38| 来源: 网络整理| 查看: 265

使用Keil进行STM32程序开发

Table of Contents

使用Keil进行STM32程序开发 1

1. 工具准备 1

2. 新程序开发方式说明 1

3. 直接使用Keil进行新建project 2

3.1 安装目标芯片的pack(如果已经安装过了则跳过) 2

3.2 新建Project 2

4.使用STM32CubeMX新建Project 8

4.1 新建Project 8

5. Options for Target说明 18

5.1 Device 18

5.2 Target 18

5.3 Output 19

5.4 Listing 20

5.5 User 21

5.6 C/C++ 22

5.7 ASM 23

5.8 Linker 23

5.9 Debug 23

1. 工具准备

1. Keil uvision(Toolchain: MDK-ARM Prefessional): 用于程序开发和调试。本文示例使用的是uVision V5.25版本。

2. STM32CubeMX: 用于新建工程并完成初始化。初始工程里面会包含ST公司开发的HAL库,可在开发时进行引用。本文示例时使用的版本为V5.6.1版本。

3. J-LINK( or ST-Link):用于程序固件下载和调试。本文示例时使用的版本为V6.72。

2. 新程序开发方式说明

一般,我们可以通过如下三种方式来进行STM32程序开发新程序:

1. 在原有程序(如示例程序)的基础上进行修改,非常简单直接;

2. 直接使用Keil进行新建project,需要自己准备好库文件并将其包含进来,相对麻烦;

3. 使用STM32CubeMX新建工程,并完成一些初始化。

这里演示2和3进行新建工程。

3. 直接使用Keil进行新建project 3.1 安装目标芯片的pack(如果已经安装过了则跳过)

1. 打开Keil uvision,然后点击Pack Installer菜单。在Pack Installer里面选择目标芯片,选择窗口右侧中的DFP(Device Family Pack)文件进行安装(Install)。由于Pack比较大,需要花比较长的时间才能够下载完全。由于我之前已经安装过了,所以显示的是up to date,表示已经安装了最新的包。

2. 安装好Pack后,关闭Pack Installer,回到Keil主页面,接下来就可以新建该系类芯片的工程了。

3.2 新建Project

1. 打开Keil uvision,通过选择Project菜单下面的New uVision Project进入新建工程指引流程。选择存放工程的文件夹并给工程命名,然后点击保存。

2. 在跳出来的Select Device里面选择目标芯片,然后点击OK。

3. 在跳出来(或者也可以从主页里面打开)的Manage Run-Time Environment窗口里面至少选择CMSIS的CORE和Device的Startup。一些项目之间有所关联,如果你选择的项的前提项没有选择,则会给出Validation Output,告知你Additional requirement,例如此处则告知startup需要STM32CubeMX Frame,因此我们还需要选择该项(后面会看到该项还需要借助STM32Cube来实现)。此处我们选择,CMSIS的CORE和Device的Startup,STM32Cube_HAL和STM32CubeMX。点击OK。

4. 由于前面选择了STM32CubeMX,因此前面在点击OK之后会跳出通过STM32CubeMX生成Code的窗口。由于前面在工具准备的时候已经安装了STM32CubeMX,此处我们直接点击Start STM32CubeMX。

5.启动好STM32CubeMX后,直接选择该工具页面右上角的GENERATE CODE(如果是首次使用则会提示你下载Pack,按部就班执行即可)。Code Generation成功后,关闭STM32CubeMX。

6. 回到Keil界面,会提示你是否导入Changes(STM32CubeMX生成的Code),选择是。然后可以在主界面看到STM32CubeMX生成的框架和引用文件。其中的main.c里面也已经把程序基本框架做好,按照自己的需求进行修改即可。

4.使用STM32CubeMX新建Project4.1 新建Project

1. 打开STM32CubeMX,在主页面里面选择Start My Project From MCU,点击ACCESS TO MCU SELECTOR,开启新建工程。

2. 在弹出来的New Project from a MCU/MPU窗口里面进行配置:

1. 在左上角的搜索框输入芯片型号名称(可只输入完整名称的前面一部分);

2. 在右下角Display栏里面点击选择具体型号;

3. 点击右上角的Start Project,开始新建工程。

4. 在返回到STM32CubeMX后,在Pinout&Configuration里面的pinout view,点击选择PA8 PIN脚,在弹出的小框里面选择RCC_MCO,使得PA8作为MCO输出PIN脚。同样地方式,设置PA1为GPIO Output。

5. 选择左侧的System Core里面的GPIO,然后选择其中的RCC,并点击PA8,把设置展开。设置展开后,修改其中的Maximum output speed为High。(注:默认是Low,如果MCO的信号频率达到MHz级别,Low speed会驱动不出信号来)

6. 点击进入Clock Configuration页面,然后配置系统时钟和MCO输出。

7. 点击进入Project Manager页面,在里面输入工程名字和存放工程的文件夹路径,并选择要生成的用于程序开发的IDE环境,此处选择MDK-ARM。

8. 点击页面右上角的GENERATE CODE,生成初始化工程及代码,结束后就可以在对应的文件夹里面看到新建的工程文件了,其中Keil工程文件在MDK-ARM文件夹里面。

9. 点击打开STM32CubeMX_NewProject.uvprojx工程文件,可以看到STM32CubeMX建立好的初始文件模板。

10. 打开main.c进行修改,在main()里面的while(1)里面加入如下代码,是的PA1在一定延时下交替输出0/1。然后点击左上角的编译(build),进行程序编译,编译成功后会显示0 errors。

11. J-LINK的SWD接口连接好STM32开发板的SWD接口,其中TMS连接SWDIO,TCLK连接SWD_CLK,并接好地线(共地),如果需要J-LINK给STM32开发板提供电源,则需要连接到20针的VCC(1#)端口。

12. 回到Keil,打开Options for Target,在debug页面选择J-LINK作为debug工具,然后点击setting,(如果有提示你升级jlink的固件,直接点否)。在弹窗target driver setup的debug页面,选择通信Port为SW(默认是JTAG)。如果设置无误,会在该窗口右侧的地方显示通过SWD读到的芯片的IDCODE,表示JLINK和芯片通信OK。选择Flash Download页面,reset and run打钩。点击确定,关闭弹窗target driver setup。点击Options for Target的OK,关闭该窗口。

13. 点击Load,下载固件到STM32开发板。成功后会在output窗口显示Finish。

14. 此时如果用逻辑分析仪观察PA1则会看到大约每隔0.5S翻转一次,PA8则会输出6MHz的时钟信号。

5. Options for Target说明

Options for Target是用于工程配置的,包括芯片选型,编译配置,DEBUG选项等等。详细的可以参考官方说明:http://www.keil.com/support/man/docs/uv4/uv4_dg_options.htm

5.1 Device

用于芯片选型。该项在新建工程时会让你进行选择,后期可以在该页面修改为其他型号。

5.2 Target

Xtal为外部晶振时钟设置,该项只影响仿真结果。On chip ROM设置为定义存放程序的flash的首地址及可用空间大小,当有IAP和APP时,两个的ROM的地址及空间要分开。RAM设置为定义程序所用的RAM的首地址及可用空间大小。

5.3 Output

用于配置输出,包括输出文件的路径文件夹和可执行文件的名称。

5.4 Listing

一般保持默认即可。

5.5 User

用于执行用户自定义动作,一般比较常用的是生成bin文件。可以有两种方式来实现:

一种是采用引用:fromelf.exe --bin -o "[email protected]" "#L" ($L: $表示应用的是路径,L表示Output->Name of Executable中设置的名字,即工程的输出名(包含路径)。@L:@表示引用的是文件名。#L:#表示引用的是本身,#L即工程的输出文件)。注意:工程路径不可包含中文,否则可能会报错。

另外一种是采用绝对路径:C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin -o ./STM32CubeMX_NewProject/STM32CubeMX_NewProject.bin ./STM32CubeMX_NewProject/STM32CubeMX_NewProject.axf (AXF,全称ARM Executable File,它是由ARM编译器产生,除了包含bin的内容之外,还附加其他调试信息,这些调试信息加在可执行的二进制数据之前)

5.6 C/C++

该选项用于c/c++编译时使用,包括预定义和文件路径选择等。其中,Preprocessor Symbols是用于程序预定义,而Include Path则是需要用户把要用到的编译文件路径加进来。

5.7 ASM

编译ASM(汇编)语言时使用,一般我们不写汇编语言,该选项卡保持默认即可。

5.8 Linker

用于链接时使用,一般保持默认即可。

5.9 Debug

用于设置下载和调试配置及初始化设置。一般,只需要用到DEBUG通信接口选择和对应的setting。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3