以正点原子阿波罗F767为例
参考资料:开发指南-寄存器版本和HAL库版本
MDK5的环境要提前配置好,STM32CubeF4或F7(取决于你使用的)的芯片包也要安装好
…\【正点原子】阿波罗STM32F767开发板\8,STM32参考资料\1,STM32CubeF7固件包
寄存器版本
一般步骤
①建目录,复制需要的文件
②在MDK中添加文件到工程
③MDK中设置头文件存放路径
④配置MDk:全局宏定义等
⑤编写用户函数
⑥添加ALIRNTEK系统文件夹SYSTEM
固定文件
就是直接从固件包原封不动抄下来的文件
这个看一看了解一下即可,实际上买单片机店家都会有相当多程序源码,而这些都包含在任何一个源码中,不需要自己去翻找.
配置
创建文件夹起码要有两个,一个是主函数所在的文件及启动文件所在的文件夹,二是上面所需要用到的固定的.s和.h,建立不同文件夹的初衷是为了让我们文件结构更清晰,更合理,".c"文件一般是具体函数,".h"文件一般只是define函数,当然c语言并没有严格的限制,你要在.c中define.h中写函数理论上来说也没有问题,但鉴于行业规范,还是应该采用前面的做法.
正点原子一般的结构是USER+SYSTEM(USER放上面提到的启动文件和自定义的文件,SYSTEM放上面提到的一串固定文件的头文件)+OBJ(放置hex,一种用于串口下载的格式)
所以实际上的步骤就是,你复制一个源码中的SYSTEM,还有启动文件,然后打开keil,新建project
文件名随便
然后USER就瞬间多了这些东西
随后进入选择型号页面,根据自己的板子选取即可
然后在USER下要放入一个.c文件,是用于我们自行操作的文件(起码里头写个空的main函数)
随后是大量参数配置过程
先右键点击这个Target 1
修改如图的两项
再右键点击Target1,将所有.c.s文件区分放入对应的组
这个.s文件是一定要在下面选择all files以后才行的,否则他不显示的
同时如果需要用到串口下载的话,就需要生产这个hex文件,上面可以选择.hex的存放目录
然后转到c/c++选项
include paths中,要选择所有的.c和.h的最后一级目录,就是说三级目录下,最后点开能看到那个文件的那个目录,而不是点开还是目录的目录
编译之后发现没有错误
总结
1.启动头文件,固定文件的引入,自定义函数建立
2.
HAL库或者说库函数版本
由于寄存器太多了,所以将它们封装成一个一个的函数(一组API),叫做固件库,固件库分为标准库和HAL库.
cube文件结构
_htmresc是图片
documentation简介
drivers,bsp是板级文件,cmsis是一种规范,hal_driver在每一个hal库源码都有利用(inc是.c,src是.h且一一对应)
Middlewares是中间件
projects是实例模板
utilities很少关注
步骤
1.复制CORE,SYSTEM,启动头文件(十个)和自定义main函数
2.配置环境
3.设置路径
不同的只是文件的数量
其他MDK使用细节
configuration中的User Keywords,可以设置特定的颜色,使某一端字符全文用不同颜色展示
Text Completion是动态语法检查功能
Strut/Class Members,用于开启结构体/类成员提示功能。
Function Parameters,用于开启函数参数提示功能。
Symbols after xx characters,用于开启代码提示功能,即在输入多少个字符以后,提示匹配
的内容(比如函数名字、结构体名字、变量名字等)
SHIFT+TAB 代码块整体左移固定的几个位,不加shift框选一大段就是右移
鼠标右键Go to Definition 可以找到代码或函数定义的地方
快速注释 先选中你要注释的代码区,然后右键,选择Advanced→Comment Selection
CTRL+H 查找替换快捷键
这个键可以固定在几个文件中查找某一串字符