STM32F10x随笔(keil mdk)

Posted 何亚红

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32F10x随笔(keil mdk)相关的知识,希望对你有一定的参考价值。

STM32F10x(Keil+MDK)

by HYH | 2017 年 11 月 3 日 下午 8:51

一.安装后keil MDK环境后,就可直接开发arm了。

备用下载链接:http://pan.baidu.com/s/1qYNtrys 密码:wqpy

最好安装最新版的。

二.RT-Thread简单使用。

1.编译.

1)打开工程

在bsp\Stm32F10x下有相应的工程文件,打开即可。

技术分享图片

2).下载设备包。

网址:http://www.keil.com/dd2/pack/#/eula-container

技术分享图片

打开包管理器

技术分享图片

导入包

技术分享图片

技术分享图片

3).设置芯片型号

选中工程文件夹,右键设置Options

技术分享图片

在Device栏选中要开发的芯片型号(如STM32F103C8)

技术分享图片

4)编译

直接Build Target即可

技术分享图片

技术分享图片

5)编译错误解决方法

A.bxcan.c,can.c错误

解决方法:不用can(高手可尝试其它方法),需要用时手动写,不用rtthread的代码。

技术分享图片

修改DeviceDrivers\can.c

在文件开始写上

#ifdef RT_USING_CAN

技术分享图片

文件尾写上

#endif

技术分享图片

B.LINK(链接错误):

设置选项Target:

技术分享图片

设置C/C++选项:

技术分享图片

6)烧写

由于Keil的烧写工具是Ulink2,所以还是用stm32flash烧写。

技术分享图片

三.USB口的使用

官方示例:

链接:http://pan.baidu.com/s/1nvn76yP 密码:3y6u

其中 STM32F10x_USB驱动.rar 为windows下的驱动程序(运行里面的程序安装)。

STM32F10xxx全速USB设备开发套件.zip 为官方示例。解压后可得到STM32_USB-FS-Device_Lib_V4.0.0文件夹,不过这些程序都只是可以在官方评估板上完美运行,如果是自己的开发板还需要进行移植(如果使用到的硬件一致,无需更改源代码)。

目录简介:

技术分享图片

由于每个工程文件夹的结构大致一致,就以其中一个作简介:

技术分享图片

1.USB转串口的使用(Virtual_COM_Port)

1)编译与烧写

打开工程文件

技术分享图片

选择这个

技术分享图片

如果安装了对应芯片的pack文件,直接关闭pack installer。然后选择是。

技术分享图片

选择要开发的芯片,可能要选两次。

技术分享图片

接下来更改Option:Output以便于用stm32flash烧写(有Ulink2的无需此操作)

技术分享图片

接下来直接编译即可。

技术分享图片

烧写时,注意要写对hex文件的名字。

技术分享图片

技术分享图片

成功烧写并安装好USB驱动时,就能在设备管理器上看到虚拟的COM口设备,而且通过向虚拟端口发送数据,可在USART0接收到数据。

技术分享图片

技术分享图片

不过,虚拟的串口有些不稳定,有时需要重新插拔才能正常使用。

四.汇编相关

1.由于未知原因,直接写汇编程序会报错(不是在C语言中嵌入)。因此需要把C语言启动的汇编文件(startup_*.s,根据芯片容量选择文件名,所有启动文件均可在MDK的pack安装目录中搜到)加入工程中(最好重新复制一份),用其初始化汇编环境。

原启动文件的Reset_Handler 会寻找SystemInit和__main符号,并跳转到该符号所在行以达到启动C程序(主函数汇编后的符号为__main)的目的。改造后把启动文件导入的符号改为自己的符号。

IMPORT 自己的符号

LDR R0, =自己的符号
BLX R0 ;跳到符号所在行运行,即启动汇编。

技术分享图片

在自己写的程序中导出符号以供链接器使用。

EXPORT 要导出的符号

技术分享图片

这是使用proteus8.6的仿真结果。可以看到0x20000010(stm32F10X的内存区内)的数值不断增大。

技术分享图片

 

 

 

 

 

 

 

 

 

 https://hyhsystem.cn/wordpress/



以上是关于STM32F10x随笔(keil mdk)的主要内容,如果未能解决你的问题,请参考以下文章

安装Keil STM32F1到mdk5中时的时候一直显示程序未响应

基于keil5新建STM32F10x寄存器版本工程

STM32F10x随笔(gcc+scons)

keil编译STM32工程时 #error directive: "Please select first the target STM32F10x device used in your

stm32编译时出现 error: #35: #error directive: "Please select first the target STM32F10x device used

在 STM32f10x 中使用 EEPROM