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/


Copyright ?2018 何亚红的博客 unless otherwise noted.

原文地址:https://www.cnblogs.com/HEYAHONG/p/8393468.html

时间: 2024-10-28 10:19:50

STM32F10x随笔(keil mdk)的相关文章

Keil MDK与h-jtag联调

keil MDK也是可以借助h-jtag进行单步调试,写出来与大家一起分享一下. keil MDK编译器使用V4.01版本,下载地址: http://www.embedinfo.com/down-list.asp?id=714   (需要注册一下) h-jtag使用V1.0版本(请注意,一定要用V1.0或者以上版本才可以与mdk兼容),下载地址 http://www.hjtag.com/download/H-JTAG%20V1.0%20Preview.zip 分别安装MDK与h-jtag 两个软

Keil MDK从未有过的详细使用讲解

转自博客:http://blog.csdn.net/zhzht19861011/article/details/5846510 这博主关于MDK 的使用的文章,写的得TM的好  TM的实用! 真心收藏! 熟悉Keil C 51的朋友对于Keil MDK上手应该比较容易,毕竟界面是很像的.但ARM内核毕竟不同于51内核,因此无论在设置上还是在编程思想上,都需要下番功夫研究的.本文以MDK V4.03为例,详细的写一下MDK的设置.界面.工具.可能会有些杂乱,但我想所涉及的东西都是最常用的:可能不是

Keil MDK忽略某一警告

使用Keil MDK调试程序的时候,没有习惯在每个文件的末尾增加一个空白行,结果文件一多,编译时产生的警告就一大堆,排错都得用滚轮滚好久,就一个空白行还得出警告,烦死了,烦死了,烦死了!实在受不了了,查阅了mdk的帮助文档,发现可以通过增加控制选项的方式,屏蔽某一固定码的警告.具体方式如下: 点击编译,查看警告编码:我这边产生的空白行警告是1,所以,打开工程配置菜单,点击C/C++选项卡,在Misc Controls里面输入: --diag_suppress=1 其中的1就是警告编码,然后点击确

Keil MDK编译器的数据类型定义

1 #include "usart.h" 2 int main() 3 { 4 USART1_Config(); //串口初始化,以下信息通过串口打印 5 printf("char: %d\r\n",sizeof(char)); 6 printf("unsigned char: %d\r\n",sizeof(unsigned char)); 7 printf("short: %d\r\n",sizeof(short)); 8

KEIL MDK 查看代码量、RAM使用情况--RO-data、RW-data、ZI-data的解释(转)

源:KEIL MDK 查看代码量.RAM使用情况--RO-data.RW-data.ZI-data的解释 KEIL RVMDK编译后的信息 Program Size: Code=86496 RO-data=9064 RW-data=1452 ZI-data=16116 Code是代码占用的空间; RO-data是 Read Only 只读常量的大小,如const型; RW-data是(Read Write) 初始化了的可读写变量的大小; ZI-data是(Zero Initialize) 没有初

有趣的keil MDK细节(转)

源:有趣的keil MDK细节 1.MDK中的char类型的取值范围是? 在MDK中,默认情况下,char 类型的数据项是无符号的,所以它的取值范围是0-255.它们可以显式地声明为signed char 或 unsigned.因此,定义有符号char类型变量,必须用signed显式声明.我曾读过一本书,其中有一句话:“signed关键字也是很宽宏大量,你也可以完全当它不存在,在缺省状态下,编译器默认数据位signed类型”,这句话便是有异议的,我们应该对自己所用的CPU构架以及编译器熟练掌握.

转:Keil MDK从未有过的详细使用讲解

来自:http://blog.csdn.net/zhzht19861011/article/details/5846510 熟悉Keil C 51的朋友对于Keil MDK上手应该比较容易,毕竟界面是很像的.但ARM内核毕竟不同于51内核,因此无论在设置上还是在编程思想上,都需要下番功夫研究的.本文以MDK V4.03为例,详细的写一下MDK的设置.界面.工具.可能会有些杂乱,但我想所涉及的东西都是最常用的:可能不是那么的严谨清晰,我想谁也没把我期望成专家!哈,有问题欢迎留言.正式开始.   首

Keil MDK下如何设置非零初始化变量(转)

源:Keil MDK下如何设置非零初始化变量 一些工控产品,当系统复位后(非上电复位),可能要求保持住复位前RAM中的数据,用来快速恢复现场,或者不至于因瞬间复位而重启现场设备.而keil mdk在默认情况下,任何形式的复位都会将RAM区的非初始化变量数据清零.如何设置非初始化数据变量不被零初始化,这是本篇文章所要探讨的. 在给出方法之前,先来了解一下代码和数据的存放规则.属性,以及复位后为何默认非初始化变量所在RAM都被初始化为零了呢. 什么是初始化数据变量,什么又是非初始化数据变量?(因为我

KEIL MDK 5.12帮你快速建工程模板的技巧

KEIL 5帮你快速建工程模板的技巧 本人使用keil mdk 5.12有一段时间了,发现keil mdk 5.12里面驱动库比较方便.这个新功能可以节省我们的时间,也可以让初学者能尽快上手和掌握这个芯片.大家以后既就可以很方便的建自己的工程模板了,再也不会为了找芯片的驱动库而烦恼. 今天外我来教大家来怎么使用这个建工程的利器吧. 首先是新建工程吧,如下图步骤: 因为我用的是stm32f401 Necleo,所以芯片型号应该要选择stm32f401te,选好芯片类型后,会弹出一个大的面板,如下图