Keil5 MDK使用

目录

  • 前言
  • 一、开发环境搭建
    • 1.1 Keil的安装
    • 1.2 其他工具安装
  • 二、新建工程模板
    • 2.1 基于固件库(先复制文件夹,后添加文件)
    • 2.2 基于寄存器
    • 2.3 基于HAL库
    • 2.4 工程目录下简介
  • 三、下载调试
  • 四、MDK使用技巧
  • 附录
    • 1、C语言基础
    • 2、MDK编译报错解决方式


前言

  介绍一下单片机开发软件Keil的基本使用,平台以STM32f407为基础创建工程模板,有机会完善


一、开发环境搭建

1.1 Keil的安装

1.Keil 523版本下载链接
2.选择安装路径,其余默认即可,具体可以参考百度
Keil5 MDK使用_第1张图片
[注] 汉化会导致部分功能设置不显示
3.基于不同芯片加载包不一样,官网http://www.keil.com/dd2/pack下载 Keil.STM32F4xx_DFP.1.0.8(双击打开安装stm32)

1.2 其他工具安装

下载链接:
https://download.csdn.net/download/weixin_44567668/88503033

  1. CH340串口驱动安装
    安装方法:直接点击安装(安装失败见readme),提示预安装成功即安装成功
    作用:安装了串口驱动后,电脑就能识别串口
  2. 串口程序下载工具mcuisp(FlyMcu)
    作用:可以将.hex格式程序通过串口下载到板子里
  3. 串口调试助手XCOM
    作用:可以通过串口收发数据
  4. STLINK驱动安装
    作用:可以在windows下配合MDK进行程序下载和调试。

二、新建工程模板

2.1 基于固件库(先复制文件夹,后添加文件)

  1. 在磁盘新建文件夹Template(包含CORE,FWLIB,OBJ, USER,并将SYSTEM复制过来)
    Keil5 MDK使用_第2张图片

  2. Project ——New Uvision Project ——Template——USER(工程名取Template)——Device——STM32F407ZG(选择对应芯片型号)——OK——Manage Run-Time Environment——Cancel
    Keil5 MDK使用_第3张图片
    Keil5 MDK使用_第4张图片
    Keil5 MDK使用_第5张图片

  3. 复制官方源文件到新建文件夹(在参考资料STM32F4固件库里)
    (1)删除USER里的Listings和Objects,
    (2)将STM32F4固件库\Libraries\STM32F4xx_StdPeriph_Driver里的src,inc文件夹复制到FWLIB(固件库源码)
    Keil5 MDK使用_第6张图片

(3)将STM32F4xx固件库——Libraries——CMSIS——Device——ST——STM32F4xx——Source\Templates\arm里startup_stm32f40_41xxx.s复制到CORE,将STM32F4固件库\Libraries\CMSIS\Includ,将里面core_cm4.h、core_cm4_simd.h、core_cmFunc.h以及core_cmInstr.h同样复制到CORE(启动文件)
Keil5 MDK使用_第7张图片

(4)将STM32F4固件库\Libraries\CMSIS\Device——ST\STM32F4xx\Include里的stm32f4xx.h和system_stm32f4xx.h复制到USER里。在STM32F4固件库\Project\STM32F4xx_StdPeriph_Templates里将目录下面的5个文件main.c,stm32f4xx_conf.h,stm32f4xx_it.c,stm32f4xx_it.h,system_stm32f4xx.c复制到USER目录下面(复制头文件和源文件)
Keil5 MDK使用_第8张图片

(5)找到工程源码里的一个SYSTEM复制过来(这一步非必要)
Keil5 MDK使用_第9张图片

  1. 将固件库文件复制到工程
    (1)右键点击Target1——Manage Project Items——Project Targets(将Target改名为Template,在Groups里删掉Source Group1,建立USER,CORE,FWLIB,SYSTEM)——OK(将上面的文件添加到我们的工程里)
    Keil5 MDK使用_第10张图片
    Keil5 MDK使用_第11张图片

(2)右击Template——Manage Project Items——选择FWLIB——点击ADD Files——选择FWLIB\src全选Ctrl+A——Add——Close(删除stm32f4xx_fmc.c,可以只添加我们用到的库文件)
Keil5 MDK使用_第12张图片
Keil5 MDK使用_第13张图片

(3)同样在CORE里添加startup_stm32f40_41xxx.s, 在USER里添加的文件main.c,stm32f4xx_it.c,system_stm32f4xx.c
(4)右击Template——Manage Project Items——建立SYSTEM——Add Files…(添加delay.c、sys.c、usar.c三个c文件)——Close——OK
Keil5 MDK使用_第14张图片

  1. 设置存放路径
    (1)设置MDK头文件存放路径
    Options for Target…——C/C++——Include Paths…——新建…(分别添加CORE,USER,FWLIB\inc和SYSTEM里的delay、sys、usar三个文件夹)
    Keil5 MDK使用_第15张图片

(2)添加全局定义标识符
Options for Target…——C/C++——Define(添加STM32F40_41xxx,USE_STDPERIPH_DRIVER)
Keil5 MDK使用_第16张图片

(3)选择编译的中间文件存放目录
①Options for Target…——Output——Select Folder for Objects…(选择新建的OBJ)——将下面三个都勾选(生成HEX文件)
Keil5 MDK使用_第17张图片

②Options for Target…——Listing——Select Folder for Objects…(选择新建的)
6. 修改代码
(1)将main.c里替换成README里的代码(注意最后一行空白),删除stm32f4xx_it.c里第32行#include "main.h"和第144行TimingDelay_Decrement();
(2)修改System_stm32f4xx.c,把PLL第一分频系数改为8,如#define PLL_M 8(使主频为168MHz)
(3)修改stm32f4xx.h里HSE_VALUE为8MHz,如#define HSE_VALUE ((uint32_t)8000000)(修改外部时钟为8MHz)
7. 调用实验——编译F7

2.2 基于寄存器

  1. Project ——New Uvision Project ——新建TEST,OBJ文件夹,在里面新建USER文件夹,保存名为test——Device——STM32F407ZG(选择对应芯片型号)——OK——Manage Run-Time Environment——Cancel
  2. 添加启动文件(注意与标准库不同有注释)
    (1)将启动文件startup_stm32f40_41xxx.s复制到USER目录下
    (2)Options for Target…——Target——修改Xtal为8——OK
    (3)Target1——双击Source Group1——选择启动文件Add——Close
  3. Options for Target…——Output/Listings——Select Folder for Objects…(选择新建的OBJ)——将下面三个都勾选(生成HEX文件)
  4. 将寄存器版里的SYSTEM文件复制到TEST里——右击Template——Manage Project Items——新建组SYSTEM和USER——Add Files将delay.c、sys.c和usart.c添加进SYSTEM——Close——OK
  5. 新建空文档test.c保存到USER里,双击USER添加,将寄存器版里源文件test.c里内容复制过来
  6. Options for Target…——C/C++——Include Paths…——新建…——将SYSTEM里三个文件夹添加进去——OK (在Define里添加宏STM32F40_41xxx)
  7. 调用实验——编译F7

2.3 基于HAL库

  1. 新建文件夹Template,在里面建立文件夹CORE,HALLIB,OBJ和USER
  2. Project ——New Uvision Project ——Template——USER(工程名取Template))——Device——STM32F407ZG(选择对应芯片型号)——OK——Manage Run-Time Environment——Cancel
  3. 复制相关文件
    (1)将官方包STM32Cube_FW_F4_V1.24.0\Drivers\STM32F4xx_HAL_Driver离得Src和Inc复制到新建的HALLIB里
    (2)将STM32Cube_FW_F4_V1.24.0\Drivers\CMSIS\Device\ST\STM32F4xx\Source
    \Templates \arm里的启动文件startup_stm32f407xx.s复制到CORE里,同时将\STM32Cube_FW_F4_V1.24.0\Drivers\CMSIS\Include里的cmsis_armcc.h, cmsis_armclang.h,cmsis_compiler.h,cmsis_version.h,mpu_armv7.h,core_cm4.h复制到CORE里
    (3)将STM32Cube_FW_F4_V1.24.0\Drivers\CMSIS\Device\ST\STM32F4xx\Include里的stm32f4xx.h,system_stm32f4xx.h和stm32f407xx.h头文件复制到USER中
    (4)将STM32Cube_FW_F4_V1.24.0\Projects\STM32F4-Discovery\Templates里Inc文件夹中的stm32f4xx_it.h,stm32f4xx_hal_conf.h,main.h和Src文件夹中的system_stm32f4xx.c, stm32f4xx_it.c, stm32f4xx_hal_msp.c,main.c复制到USER里
    (5)将模板里的SYSTEM复制进Template1中
    4.在小组里添加相关文件
    (1)右键点击Target1——Manage Project Items——Project Targets(将Target改名为Template,在Groups里删掉Source Group1,建立USER,CORE,FWLIB,SYSTEM)——OK(将上面的文件添加到我们的工程里)
    (2)将HALLIB\Src添加到HALLIB组里(去掉stm32f4xx_hal_dsi.c,stm32f4xx_hal_lptim.c和stm32f4xx_hal_msp_template.c,此外去掉带ll的和带timebase的),USER里添加main.c,stm32f4xx_hal_msp.c,stm32f4xx_it.c和system_stm32f4xx.c,CORE里添加头文件和启动文件startup_stm32f407xx.s,SYSTEM里添加sys.c,delay.c和usart.c
  4. Options for Target…——C/C++——Include Paths…——新建…——将CORE,USER,HALLIB\Inc和SYSTEM里三个子文件夹添加进去——OK(在Define里添加宏USE_HAL_DRIVER,STM32F407xx用英文逗号隔开,取消勾选Output里的Browse Information)
  5. 将模板里main.c里的内容复制进工程里的主函数中

2.4 工程目录下简介

1.USER
(1)main.c ——主函数来调用其他函数
(2)stm32f4xx_it.c——中断处理文件,stm32f4xx是型号
(3)system_stm32f4xx.c——系统初始化文件
2.CORE包含内核相关的函数和宏定义
(1)startup_stm32f40_41xxx.s——启动文件(不需要动)
3.FWLIB固件库
(1)misc.c——存放头文件
(2)stm32f4xx_gpio.c—— 是处理引脚相关函数的文件
(3)stm32f4xx_rcc.c——是处理内部时钟相关函数文件(不能删除)
(4)stm32f4xx_usart.c——是串口通信的相关函数文件
4.HARDWARE存放和硬件相关的函数
(1)led.c对GPIO引脚的初始化
5.README告诉别人干嘛的
6.SYSTEM
(1)delay.c——存放的是和延时相关的函数。
(2)sys.c——存放的是系统初始化相关的函数,不必深究。
(3)usart.c——存放的和串口通讯时用到的代码

三、下载调试

  1. STM32串口程序下载
    (1)连线
    ①在板子上把RXD和PA9,TXD和PA10通过跳线帽连起来
    ②把BOOT1和BOOT0都设置为0
    ③把B0接V3.3,按一下复位键
    ④在USB_232处插入USB线连接电脑
    (2)FlyMcu下载设置——开始编程——成功后显示:共写入…KB,好事…毫秒
    ①搜索串口,选择虚拟出来的USB:COMx:空闲USB-SERIAL CH340
    ②勾上“编程前重装文件”、“校验”以及“编程后执行”,其他都不要勾选
    ③左下方:选择第四个DTR的低电平复位,RTS高电平进bootloader
    ④联机下载文件选.hex
    ⑤波特率设置为76800bps
    (3)打开串口调试助手(XCOM)设置波特率为115200查看收发信息是否一样
  2. STLINK下载与调试程序
    (1)keil的设置
    ①目标选项——Debug——Use选择ST-Link Debugger,勾选Run to main()
    ②目标选项——Debug——Settings——设置Port为SW,Max为4MHz
    ③目标选项——Utilities——Settings——勾选Reset and Run
    (2)开始运行
    ①点击开始/停止仿真(则会线更新代码在仿真),或者点击下载F8(只下载代码)(注意B0和B1都要设置GND)
    ②MDK弹出Debug工具条——堆栈局部变量窗口
    Keil5 MDK使用_第18张图片
    Keil5 MDK使用_第19张图片

③把光标放到test.c的第9行左侧左击,可以放置一个红色的断点,再次单击取消,然后点击执行到断点处
④菜单栏外设——USART——USART1——点击执行过去
(3)打开串口调试助手(XCOM)设置波特率为115200和串口号,然后点击执行过去按钮,看t值变化

四、MDK使用技巧

  1. 文本美化
    (1)Configuration——Editor——选择Encoding为Chinese GB2312(Simplified),设置Tab size为4(设置注释关键字字体)
    (2)Colors & Fonts——C/C++ Editor Files——Number(修改字体颜色和大小,或者Ctrl+鼠标滑轮进行放大或者缩小)
    (3)User Keywords——C/C++ Editor Files——输入关键字改变颜色
  2. 语法检查&代码提示
    (1)配置——Text Completion——Symbols after xxx characters(用于开启代码提示功能)
    (2)Strut/Class Members(用于开启结构体/类成员提示功能)
    (3)Dynamic Syntax Checking(则用于开启动态语法检测)
    (4)Function Parameters(用于开启函数参数提示功能)
  3. 代码编辑器技巧
    (1)Tab(或者Shift + Tab)可以使一片代码右移(或左移)
    (2)右击函数或者变量上——Go to Definition Of ‘…’(进行快速定位,注意先编译)
    (3)选中一片代码右击——Advanced——Comment Selection(或取消注释)
  4. 其他小技巧
    (1)右击头文件——Open Document “XXX”可以快速打开文件
    (2)Ctrl + H(查找替换)
    (3)双击头文件——点击上面图标在文件中查找Find in Files…(跨文件查找)

附录

1、C语言基础

https://blog.csdn.net/weixin_44567668/article/details/129003611

2、MDK编译报错解决方式

https://blog.csdn.net/weixin_44567668/article/details/129003692

你可能感兴趣的:(嵌入式软件,单片机,stm32,Keil)