找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3209|回复: 0
打印 上一主题 下一主题
收起左侧

用stm32说hello world

[复制链接]
跳转到指定楼层
楼主
ID:99624 发表于 2015-12-27 03:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以前搞过stm32开发,不过长时间不搞已经忘的差不多了,最近手头一个项目要用stm32开,几经周折,查阅了大量的资料,博客终于搞出来个helloworld,记录下过程,为自己也为入门的朋友们做个提醒吧!首先说下我的环境:
编译工具:Keil V4.10
下载工具:Flash Loader Demonstrator
固件库版本:V3.5.0
下载方式:串口下载(没用仿真器)
前两个工具百度一下就行,固件库我是从官网下载的,路径如下
登录st官网,右上角选择中文,然后   支持-->Tools andSoftware-->软件-->微控制器软件-->STM32微控制器软件。
然后在Software Type 下勾选Firmware,在Software Version下勾选3.5.0,点击筛选之后的那个选项,并下载它(固件库),感觉下载工具也可以在官网下载的,但是没时间去摸索了,有兴趣的朋友可以去找找。
有了下载工具,编译软件,固件库之后,我们的任务就是通过keil生成hex文件,并通过下载工具将其下载到stm32中,下面介绍一下工程的建立规范吧。
……
算了,不介绍了,太麻烦了,我给出我当时参考的博文吧:
http://www.cnblogs.com/emouse/archive/2012/03/01/2375146.html

参照以上文章给的步骤,就能建立起一个比较规范的工程,这里我再补充几点,
1. 启动文件的容量选择上参考以下标准:
小容量是16~32K
中容量是64~128K
大容量是大于256K
至于你的芯片容量是多少,请对照手册自行翻译吧:

2. 我选择复制的第一个工程是
STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\USART\Printf
编译过程中遇见一些bug,这里说下解决办法:
1)..\USER\main.c(24): error:  #5: cannot opensource input file "stm32_eval.h": No such file or directory
关于这个bug,搜了一下,大致就是官方给的程序调用了比较高一层的封装函数,而上面博文给出的步骤显然没有将这个文件考虑在内,所以我们要多进行几步。
这个函数在 STM32F10x_StdPeriph_Lib_V3.5.0\Utilities\STM32_EVAL下,复制它到我们的工程的LIB目录下,然后添加它的路径到我们我们的工程中,就是链接博文的这一步:

然后将stm32_eval.c添加到我们工程的User目录下


编译后,发现错误变成了这样:
..\LIB\Utilities\STM32_EVAL\stm32_eval.h(169): error: #35: #errordirective: "Please select first theSTM32 EVAL board to be used (instm32_eval.h)"
..\LIB\Utilities\STM32_EVAL\stm32_eval.h: #error "Please selectfirst the STM32 EVAL board to beused (in stm32_eval.h)"
关于这个错误,请大家打开stm32_eval.h,中间有下面这样一段话:


#if !defined (USE_STM32100B_EVAL) && !defined(USE_STM3210B_EVAL) && !defined(USE_STM3210E_EVAL)\
&&  !defined (USE_STM3210C_EVAL)&&  !defined (USE_STM32L152_EVAL)&&  !defined(USE_STM32100E_EVAL)
//#define USE_STM32100B_EVAL
//#define USE_STM3210B_EVAL
//#define USE_STM3210E_EVAL
//#define USE_STM3210C_EVAL
//#define USE_STM32L152_EVAL
//#define USE_STM32100E_EVAL
#endif
这段话,我猜测是根据STM32不同的官方样品板,上层的封装函数可能有不同,故设计一个宏定义来进行配置,对,应该就是这样……
假如谁用的是官方样品板子的话,就根据自己的型号进行宏定义,我是自己画的板子,所以随便选喽!就以
USE_STM32100E_EVAL为例进行宏定义。
第一种方法,你可以把自己型号前的那个注释个去掉。
第二种方法,在keil中配置宏定义,如下


显然,第二种方法比较高大上一些,也利于管理,推荐给大家。
再次编译,通过了。
然后就是下载了。
插上板子,启动模式调成        boot0 :1        boot1:0
上电,打开下载工具,选择串口号,一路默认,选择hex文件,下载。
断电,启动模式调成        boot0:0         boot1:0
上电,成功运行(希望如此吧)。

对了,链接所给的那个博文有几个地方在稍微提醒一下:

由于我们使用的是串口下载,故这个地方我们就选择默认的左侧的那个红圈。
还有

宏定义之间使用英文的","分开,刚开始我还以为是空格那。
对了还有最重要一点:
图中的那个Use MicroLIB一定要勾选上,一定要勾选上,一定要勾选上,重要的事情说三遍!
写这篇文章的时候,我同步创建了一个新工程,应该没有问题了。
恩,就这样了,希望有帮助到人。






分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表