原创 STM32学习笔记(3)

2010-7-5 22:25 8914 9 14 分类: MCU/ 嵌入式

升级库


光盘中所带的例子是3.10的,另外还有一个3.12的,我 试着将3.12的库替代原来的库,还真有问题,下面就简述问题及解决方法。


(1)将库文件解压


库文件名是:stm32f10x_stdperiph_lib.zip,解压后放在任意一个文件夹中。


(2)由于原作者做了很好的规划,每一个项目中都分成三个文件夹,并且在source文件夹中又做了3个文件夹,其中APP文件夹是放自己写的文件的,其他的两个是从库中复制过来的,因此,想当然地把3.1.2版本中相同的两个文件夹:


CMSIS和STM32F10x_StdPeriph_Driver直接复制过来,以为一切OK,结果一编译,出来一堆错误。


其中有错误:


Source\App\main.c(7): error:  #20: identifier "GPIO_InitTypeDef" is undefined


....


还有大量的警告:


Source\STM32F10x_StdPeriph_Driver\src\stm32f10x_flash.c(130): warning:  #223-D: function "assert_param" declared implicitly


看了看,在APP文件夹中还有一些不属于自己的东西:


stm32f10x_conf.h,stm32f10x_it.h,stm32f10x_it.c,打开一看,果然是3.10版本的,没说的,换。。。。,找到STM32F10x_StdPeriph_Lib_V3.1.2\Project\Template文件夹,用里面的同样的文件替换掉这几个文件,这回应该万事大吉了吧。


再一看,依然如故,,没办法了,只好细细研究了。通过观察,发现原来可以编译通过的工程,在main.c下面挂满了.h文件,而这个通不过的,则少得很。


68f7ee74-6f04-4234-adfa-e5a408b5b925.jpg


这是编译能通过的工程


c873ca90-6e1c-4a4a-b82d-67df5ec6fdf0.jpg


这是编译通不过的工程


显然,有些文件没有被包含进来。一点一点跟踪,发现大部分的头文件都包含在stm32f10x_conf.h中,而这个文件又出现在stm32f10x.h中,其中有这样的一行:


#ifdef USE_STDPERIPH_DRIVER
  #include "stm32f10x_conf.h"
#endif


看来,是这个USE_STDPERIPH_DRIVER没有被定义啊,于是,人为地去掉条件:


//#ifdef USE_STDPERIPH_DRIVER
  #include "stm32f10x_conf.h"
//#endif


再次编译,果然就OK了。可是,可是,也不能就这么去掉啊,怎么办呢?万能的网啊,一搜果然就有了。


点击看大图


到设置 C/C++页面


在那个define中加入“USE_STDPERIPH_DRIVER,STM32F10X_HD”


当然,去掉条件编译前面的注释,回到原样。


再次编译,一切顺利。可是,原来的工程例子也没有加这个啊,怎么回事呢?再次打开原来的例子,找到stm32f10x.h,可以看到有这么一行:


aa1927b7-e8c9-474f-8348-a6c6d81e05d5.jpg


而新的stm32f10x.h中则是这样的:


26a05edb-488f-4fe4-b085-d76b0ff4f556.jpg


原来那个3.1.0版的stm32f10x.h被人为地修改了一下,所以,不在define中定义也不要紧,而新升级的3.1.2则不行了。


至此,简单的升级搞定。

文章评论5条评论)

登录后参与讨论

用户1467915 2011-6-8 11:37

不错,终于明白为什么编译老出错了。。。。

teach51_109853927 2010-8-23 17:49

黄色的钥匙代表那个文件是只读文件。对编译没有影响。

用户1649549 2010-8-23 09:15

请问工程文件上面有个黄色的钥匙是代表什么意思呀?? 对编译有什么影响吗?? 我建立工程,添加的LIB中文件全都有这个,而且编译出来也很多error:identifier "USART_InitTypeDef" is undefined 这样的错误,请问也是库文件版本的问题还是(我头文件都添加进去了)?板子是金牛107的。求高手指点。

teach51_109853927 2010-7-8 13:45

肯定应该有啊,要不你重下载一个库看一看?或者我可以发一份库给你,你留个邮箱就行。

用户806954 2010-7-8 12:56

楼主好,我也遇到了类似的问题。但是我没有在3.12中 stm32f10x.h中找到 #include "stm32f10x_conf.h" 啊 ,让我太纠结了 请指教

用户1441023 2008-12-21 17:06

告诉你几个bug: 1.你输入31然后来回点击“十”和“十六”按钮看一下ascii标签里面有什么现象 2.你在输入数据的文本框随便输几个不是数字的非法字符看一下十什么现象。
相关推荐阅读
teach51_109853927 2015-10-25 22:37
带“锁定输出”的数控稳压电源(二)
3.控制程序编写        硬件电路设计完成后,就要编写软件了。软件基本上可以分为键盘驱动,PWM生成,功能实现等部分。 3.1 键盘处理程序        STC单片机的引脚可以...
teach51_109853927 2014-03-02 12:17
带“锁定输出”的数控稳压电源(一)
本文是探索“开源培训”思想的作品。 所谓“开源培训”是指在某个社区,各志愿者提供有一定实用价值和教学价值的作品,同时详细说明制作过程,并提供制作所需的各类资源,帮助入门者快速找到适合自己的项目...
teach51_109853927 2014-02-22 21:15
《单片机项目教程》、《单片机项目教程C语言版》电子课件
《单片机项目教程》电子课件 http://pan.baidu.com/s/1kT2Yb6f 《单片机项目教程C语言版》电子课件 http://pan.baidu.com/s/1gd5O...
teach51_109853927 2014-02-22 21:05
《单片机应用与接口技术》相关资源
单片机应用与接口技术    机械工业出版社出版,江苏省教育厅推荐教材 《单片机应用与接口技术》课件 http://pan.baidu.com/s/1c0kpzUg 《单片机应用与接...
teach51_109853927 2014-02-22 15:25
便携式无线抢答器
本产品专门为开展活动时需要用到抢答器的场合设计,已制作成品,读者可以参考作为练手之用。 如图1所示左边为信号接收装置(主持人用),右边两个为发射装置(比赛选手用)。都只需要使用干电池供电即可。...
teach51_109853927 2014-02-22 15:22
Modbus通讯协议
Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化(Schneider Automation)部门的一部分,现在Modbus已经是工业领域全球最流行的协议。此协...
我要评论
5
9
关闭 站长推荐上一条 /2 下一条