keil MDK 新建项目教程

前言

  • 由于好长一段时间没有用keil mdk 软件开发mcu软件了,最近在利用零闲时间来开发个低成本的平衡小车,一开始考虑采用esp32当做主控,测试发现,esp32没有正交编码接口,无法对直流有刷电机做闭环控制。想来想去,最后还是觉得采用stm32来做主控比较合适,主要是找到了几片stm32f103c8t6的存货。要知道今年stm32芯片价格翻了好几倍,买新的太不划算了。这也是一开始想用esp32来开发的原因,便宜。
  • stm32开发最好用的还是软件还是keil,这是对比了其他几种软件,keil启动编译速度都是比较强的。
  • 之前一直是在别的项目工程上面直接开发,全新新建一个工程发现还是有一些问题,现将整个新建工程及配置过程进行一个记录。

新建工程

1、新建工程目录

project->new porject 新建一个文件夹,并改为工程的名字,打开文件夹,输入要保存的文件名称-test。
keil MDK 新建项目教程_第1张图片

2、选择对应的芯片型号

以st32f103c8t6为例
keil MDK 新建项目教程_第2张图片

3、设置启动文件

在弹出的窗口中选择CMSIS->CORE,Device->Startup。仅选择这两项。之后点OK。

keil MDK 新建项目教程_第3张图片
环境配置界面后续也可以在菜单栏点击绿色菱形按钮打开。
在这里插入图片描述

4、添加工程文件

右键target1 ->Add Group,然后鼠标左键长按点击new Group文件夹,修改名称。项目可以新建多个group,相当于给工程中的.c和.h文件分组。一般习惯建立3个文件夹
lib - 存放系统库文件
src - c存放 main.c文件
hardware - 存放自己写的硬件驱动文件,gpio.c adc.c等
keil MDK 新建项目教程_第4张图片双击上一步新建的文件夹,添加文件
keil MDK 新建项目教程_第5张图片
将其他项目用的工程文件拷贝到之前建立的stm32test工程目录,找到其中的src文件夹,添加c文件。
注意在keil project窗口,展现的文件夹层级不需要和实际工程文件里的文件层级对应
keil MDK 新建项目教程_第6张图片
ctrl+a选择src文件夹下面的所有c文件,点击添加,添加完成后的界面如图。
keil MDK 新建项目教程_第7张图片
依次添加project中src 和hartdware文件夹下的文件。如果没有就自己新建c文件后,再添加到对应的文件夹。本例中新建main.c gpio.c gpio.h。main.c直接放到stm32test主目录下,gpio.c gpio.h放到stm32test下面新建的hardware文件夹中。
keil MDK 新建项目教程_第8张图片
到此项目文件添加完成。

5、添加需要包含的文件索引

按照下图添加文件索引,告诉软件,项目中所用的.h头文件是在什么位置,否则编译中会出现找不到头文件的现象。
keil MDK 新建项目教程_第9张图片
添加宏定义 USE_STDPERIPH_DRIVER
keil MDK 新建项目教程_第10张图片

6.编译

点击编译按钮,编译成功。项目新建完成后,后续可以继续编写其他c文件和h文件。
keil MDK 新建项目教程_第11张图片

其他参数的配置

1、添加c文件的另外一种方式

上文说到是直接双击左侧project里面的文件夹进行c文件添加。实际上还有另一种方式来添加c文件。
按钮manage project items按钮,显示如下界面,可以很方面的针对每一个group添加对应的c文件,更加直接。两种方式没有本质区别,就看个人的使用习惯。
keil MDK 新建项目教程_第12张图片

2 opitions配置

点击菜单栏上面的option按钮弹出如下界面,基本上针对项目的所有配置都在下面的界面中,先将一些常用的功能进行一些说明。
keil MDK 新建项目教程_第13张图片

2.1 Target界面

该界面值得注意的是 ARM编译器选项,最新版keil V5.36默认的编译器是第6版,如果工程的库文件用的是旧版,需要按照如下将编译器选择为第5版,否则编译过程中会出现各种错误。(该如何配置才能选择第6版编译器,还未深入研究,欢迎各路大神指点一二)。

下面的ROM RAM基本不需要设置,这个选择了芯片之后默认的。如果用到BootLoader 那么app程序需要改下IROM1的起始地址。一般是是将内存进行如下分区:

名称 地址 大小
bootloader 0x8000000 0x1000
APP1 0x8001000 0x5000
APP 2 0x8006000 0xA000

app1为运行分区,运行最新固件。app2为出厂分区,存放出厂的固件。如果当前程序是app1,就要将下面的IROM1 改为0x8001000 0x5000。

keil MDK 新建项目教程_第14张图片

2.2 Output界面

该界面主要关注如下三个选项。

  • Debug information 如果不选,就无法进行在线debug。
  • Create HEX File 生成hex文件,如果要用其他工具烧写固件,就需要生成hex文件。
  • Browse Information 生成文件跳转信息,如果不选,则在程序中右键点击跳转到函数的定义处,是无效的。不选该选项的一个好处是加速编译,缩短编译时间,特别是针对比较大的项目可以很好的节省编译时间

keil MDK 新建项目教程_第15张图片

2.3 Output界面

该界面的作用是,在编译过程中运行一些自定义的命令。
比如,在编译完成后自动生成 .bin文件,或者在编译之后运行删除编译中间文件等等命令。
keil MDK 新建项目教程_第16张图片

2.3 C/C++界面

define 可以添加自定义的宏定义
optimization 编译优化选项 0 不优化,一般选择不优化。3最强优化,减小生成的二进制文件的大小。但可能导致部分变量被优化没了,程序运行不正常。不是高手就不要动优化编译选项。
Misc Controls 目前仅用到 --c99 ,可以运行c99标准,c99最显著的特征是可以对结构体进行指定初始化。这个功能可大幅增加结构体的易读性。
keil MDK 新建项目教程_第17张图片

2.3 Debug界面

该界面主要是选择debug工具,一般stm32现在都用st-link,淘宝价格就20块钱,比jlink ulink jtag都便宜。
点击setting 按钮在flashdownload界面添加对应的芯片容量。这一步如果不选择会导致stlink烧写程序报错,一定要注意。

keil MDK 新建项目教程_第18张图片

在debug的debug界面需要关注下图红框中的选项,如果连线无问题,确无法烧写程序。可以考虑调整connect 和reset选项。一个一个试,之前项目中就出现过这个情况,通过调整这两个选项解决了问题。
keil MDK 新建项目教程_第19张图片

示例工程文件下载链接:
工程文件

你可能感兴趣的:(STM32,单片机,stm32,嵌入式硬件,keil)