STM32固件库V3.4移值到Keil_MDK_v4.12_图文详解

STM32固件库V3.4移值到Keil_MDK_v4.12_图文详解
STM32固件库V3.4移值到Keil_MDK_v4.12_图文详解

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 的状态使用的局限性还是比较多的,目前我基本不用。

相关主题
相关文档
最新文档