STM32固件库V3.4移值到Keil_MDK_v4.12_图文详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STM32固件库V3.4移值到Keil MDK v4.12 图文详解
1、本例所用到的MCU是STM32F103VET6,已经过测试,如果是其它MCU的
话,只需作小许修改即可
2、首先按下图所示建立相应用的文件夹,注意层次关系:
3、下图是工程文件夹里相应的文件:
接照上图所示,在相应的文件夹里放放相关的“.C”文件,在startup里放入相应的".s文件",对于Keil 其文件在“\Libraries\startup\arm”里面可找到。
4、接着就打开Keil MDK V4.12,新建一个工程并选择好器件:
点击“品”字形的图标,建好组:
5、下图是建好组后的图并在CoreSupport组里“Add Files”了一个文件:
6、下图是startup组里“Add Files”后的图:
7、下图是StdPeriph_Driver组里“Add Files”后的图,由于文件比较多
一张图并不能完全显示出来,我是将所有在“\Libraries\StdPeriph_Driver\src”所有的文件都添了进去,在实际应用时要按实际情况添加:
8、下图是STMF10x组里“Add Files”后的图:
9、下图是User组里“Add Files”后的图:
10、单击“OK”,终于添加文件完毕,之后就到设置了,单击右图所示的图标:
,按下图所示设置好,点"Output"标签页:
11、“Output”文件夹用以存放你所勾选项目产生的“Debug Information”、
"Create HEX File"和“Brower library”信息或文件。
接着就是点"Listing"标签页,设置方法和上图相同
12、点标签页“C/C++”,这页的设置很重要,首先加入这个宏:
13、接着,点击如图所示有黑色圈的按钮
接着按下图所示设置,也就是所用到固件库头文件的路径:
好了。
编译一次吧,看是否有错?
14、这时在“Output”和“Listing”文件夹里就有了许多文件:
如果不要这些信息或为为发加快编译速度,可以去掉在第十步所示的“Debug Information”和“Brower library”前面的钩即可。
15、最后到了J-LINK仿真下载器相关项的设置。
下图主要是右半部分的设置:
紧接着就是点上图蓝色背景右边的"Settings"按钮,不要忘了接上STM32开发板的电源和J-LINK,还要装好J-LINK的驱动,按下图设置好:
先点击“Scan”按钮,接着就是"Auto Clk"按钮,哈,我板子的JTAG时钟能达到10MHZ!
16、接着上图所示点“Flash Download”标签页并按实际况设置好:
17、还有最后一步,看下图:
全部完成了,设置了那么久为的就是能看到下图:
18、给大家一点设置的参考吧:
需在工程项目C/C++里面Define 添加:USE_STDPERIPH_DRIVER,STM32F10X_HD STM32F10X_LD---STM32小容量芯片
STM32F10X_MD---STM32中容量芯片
STM32F10X_MD---STM32中容量芯片
STM32F10X_CL---STM32互联网型芯片105/107等
USE_STDPERIPH_DRIVER---使用库里面的API函数
在工程里面添加相应芯片的启动文件:
STM32F10X_LD.S
STM32F10X_MD.S
STM32F10X_HD.S
STM32F10X_CL.S
在system_stm32f10x.c修改工作频率,默认为72MHz,在外部晶振为8MHz的情况下。
STM32 Keil-MDK工程模板 V3.5 固件库
创建一个工程模板:
1. 解压STM32库文件然后拷贝
2. 目录结构:
Main
-> stm32f10x_it.c 此三个文件在同一个目录,用户编写。
-> stm32f10x_conf.h
-> main.c
_CMSIS
-> core_cm2.c 汇编接口
-> system_stm32f10x.c
_DeviceSupport
-> 所有的s文件启动代码
Select the corresponding startup file depending of the used device:
- startup_stm32f10x_ld_vl.s: for STM32 Low density Value line devices
- startup_stm32f10x_ld.s: for STM32 Low density devices
- startup_stm32f10x_md_vl.s: for STM32 Medium density Value line devices
- startup_stm32f10x_md.s: for STM32 Medium density devices - startup_stm32f10x_hd.s: for STM32 High density devices
- startup_stm32f10x_xl.s: for STM32 XL density devices
- startup_stm32f10x_cl.s: for STM32 Connectivity line devices
_STM32F10x_StdPeriph_Driver
-> 所有的c文件 V3.5.0的官方固件
-------------->
注意事项:
1. Main.c应该放在_CMSIS的前面。
且必须有文件stm32f10x_conf.h ,否则就默认include了keil的stm32f10x_conf.h文件
2. 注意inlcude path的顺序.
3. 在Preprocessor Symbols中定义 USE_STDPERIPH_DRIVER[使用标准外设库驱动], 否则编译出现 assert_param 未找到的错误:
4. 优化等级 00 表示不优化
5. One elf per function. 只编译用到的函数.
拷贝STM32F10x_StdPeriph_Examples 下每个目录的main.c stm32f10x_conf.h stm32f10x_it.c 到 src 目录即是一个范例
-------------->
Copy Keil 范例的 stm32_Init.c 到项目中,编译。
发现一个定义的错误。
是因为keil的头文件和st库的3.50的头文件中定义不一样
keil -> st
USART1_IRQChannel 改为 USART1_IRQn
USART2_IRQChannel 改为 USART2_IRQn
USART3_IRQChannel 改为 USART3_IRQn
编译通过!
--------------->
Copy Keil 范例的RTX_Conf_CM.c 到项目中, 设置options中Operation system 为RTX-Kernel
可以开始使用Keil的RTOS.
用这个模板轻松实现图形化配置懒人有福了,不过stm32_Init.c 现在一直保持1.3 的状态使用的局限性还是比较多的,目前我基本不用。