前言

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

新建工程

1、新建工程目录

project->new porject 新建一个文件夹,并改为工程的名字,打开文件夹,输入要保存的文件名称-test。

2、选择对应的芯片型号

以st32f103c8t6为例

3、设置启动文件

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


环境配置界面后续也可以在菜单栏点击绿色菱形按钮打开。

4、添加工程文件

右键target1 ->Add Group,然后鼠标左键长按点击new Group文件夹,修改名称。项目可以新建多个group,相当于给工程中的.c和.h文件分组。一般习惯建立3个文件夹
lib - 存放系统库文件
src - c存放 main.c文件
hardware - 存放自己写的硬件驱动文件,gpio.c adc.c等
双击上一步新建的文件夹,添加文件

将其他项目用的工程文件拷贝到之前建立的stm32test工程目录,找到其中的src文件夹,添加c文件。
注意在keil project窗口,展现的文件夹层级不需要和实际工程文件里的文件层级对应

ctrl+a选择src文件夹下面的所有c文件,点击添加,添加完成后的界面如图。

依次添加project中src 和hartdware文件夹下的文件。如果没有就自己新建c文件后,再添加到对应的文件夹。本例中新建main.c gpio.c gpio.h。main.c直接放到stm32test主目录下,gpio.c gpio.h放到stm32test下面新建的hardware文件夹中。

到此项目文件添加完成。

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

按照下图添加文件索引,告诉软件,项目中所用的.h头文件是在什么位置,否则编译中会出现找不到头文件的现象。

添加宏定义 USE_STDPERIPH_DRIVER

6.编译

点击编译按钮,编译成功。项目新建完成后,后续可以继续编写其他c文件和h文件。

其他参数的配置

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

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

2 opitions配置

点击菜单栏上面的option按钮弹出如下界面,基本上针对项目的所有配置都在下面的界面中,先将一些常用的功能进行一些说明。

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。

2.2 Output界面

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

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

2.3 Output界面

该界面的作用是,在编译过程中运行一些自定义的命令。
比如,在编译完成后自动生成 .bin文件,或者在编译之后运行删除编译中间文件等等命令。

2.3 C/C++界面

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

2.3 Debug界面

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

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

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

keil MDK 新建项目教程相关推荐

  1. STM32学习笔记——MDK新建项目

    STM32学习笔记 KIEL新建项目过程 文章目录 STM32学习笔记 前言 一.keil新建库函数版本项目 二.注意事项 1.文件分类 2.MDK配置 总结 前言 此处使用寄存器版,进行学习.后期看 ...

  2. PyCharm新建项目教程

    给自己的一个笔记^_^ 1.New Project Project Interpreter设置新建项目所依赖的python环境: New environment using 设置新的依赖环境.在项目中 ...

  3. Keil MDK与Keil C51共存的方法(成功)

    前言 Keil5比Keil4功能更加丰富,想要同时开发两款芯片一块是51内核一块是STM32单片机该怎么做能,怎么样让KEil可以同时建立并且可以并且可以编译两种工程呢,那么这里我将给大家出Keil5 ...

  4. Keil MDK 将升级为 Keil Studio,你想要的黑色主题来了,附手把手使用教程

    关注+星标公众号,不错过精彩内容 编排 | strongerHuang 微信公众号 | 嵌入式专栏 看到标题,你是不是很吃惊? 是的,你没看错,Keil或将迎来一次全新的升级. 本文带你认识Keil ...

  5. STM32入门笔记(02):MDK Keil5 开发环境搭建及新建工程模板教程(SPL库函数版)

    目录 Keil5 开发环境搭建 芯片数据手册 Mec 多功能智能小车底盘开发与使用手册 Mec 主控原理图 Mec STM32F103VET6集成主控板资源分配 Mec OLED 显示内容 如何给 S ...

  6. ePower入门-TLE9879新建Keil MDK工程

      以下,记录从零开始创建一个全新的Keil MDK工程: 选择"Project"–>"New uVision Project": 选择芯片型号: 弹出R ...

  7. 微信小游戏开发教程-新建项目

    微信小游戏开发教程-新建项目 1. 新建小游戏项目 我们这回使用空项目,不要勾选使用模板创建. 2. 添加小游戏必要文件 项目创建好以后我们发现缺少一些必要的文件,我们手动添加即可: game.jso ...

  8. ASP.NET Core 新建项目(Windows) - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 新建项目(Windows) - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 新建项目(Windows) 对于任何语言和框架,都 ...

  9. ASP.NET Core 新建项目 - macOS 环境 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 新建项目 - macOS 环境 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 新建项目 - macOS 环境 对于任何语言和 ...

最新文章

  1. 教育部公布:清华北大等12校首批开设“未来技术学院”,它们都设置了哪些专业?...
  2. 变态一把,从internet获取所有手机号以及所在地
  3. FlyWay简单使用
  4. 《锋利的jQuery》之jQuery简介
  5. Webpack构建多页应用心得体会
  6. 廖雪峰python教程在哪看_:廖雪峰python教程在哪
  7. 《Essential C++》笔记之Iterator Inserter(插入迭代器)
  8. [物理学与PDEs]第5章习题6 各向同性材料时强椭圆性条件的等价条件
  9. Windows Server 2003 来配置网络地址转换 (NAT
  10. 10.27T1 堆贪心
  11. DB2数据库常用指令以及重要知识点学习
  12. 安装3dmax2020版本注意事项
  13. 如何配置微信公众号卡密回复?
  14. 淘宝开放接口api分享
  15. Android RecyclerView之粘性头部+点击事件(非原创)
  16. 谁在「连接」制造业?
  17. linux 对战平台,【浩方对战平台和搜狗输入法 For Linux哪个好用】浩方对战平台和搜狗输入法 For Linux对比-ZOL下载...
  18. MySQL插入数据库乱码问题Incorrect string value: ‘\xE8\xB5\xB5‘ for column ‘name‘ at row 1
  19. windows 8 .1全家桶(很详细)
  20. 一步一步实现微信抢红包

热门文章

  1. PDF文件不能编辑的原因
  2. Tryhackme-Cryptography
  3. 计算机导航窗口添加桌面,为Win7资源管理器导航添加桌面选项的方法
  4. 新人培训,前期重点考核项
  5. 迅捷CAD编辑器修改文字颜色步骤
  6. 5个堪称神器的国产APP,任何手机都需要!
  7. FFmpeg浅尝辄止(四)——音频的解码和编码
  8. Excel文件打开时提示连接被禁用却找不到连接
  9. OpenCV的CvMat与cvSolve函数
  10. 三相逆变器双pi控制器参数如何调节_学术简报︱如何解决并网逆变器的重复控制器积分饱和问题?...