STM32学习笔记(1)——搭建库函数工程

好吧,现在开始学习STM32了,顺便把这个过程记录下来,Keil安装之类就不说了,先用Keil搭建一个工程。

我是参照这篇文章开始的:《零死角玩转stm32-初级篇(终结篇)》

开始的时候我完全按照文章介绍的方式一步一步搭建的,下面我再自己搭建一下:

1、先获取STM32的库函数开发包。

  貌似现在最新版本的firmware还是3.5版本的。

  在这里可以下载到:ST官网(我是在ST官网翻了很久才翻到的啊)也可猛击这里直接下载

  为了方便,这个博客里也上传了一份,不过把chm文件去掉了:点这里下载

2、组建工程。

  开始看到zip包的时候感觉文件挺多的,不知如何处理,现在回过来整理一下其实也不多,必需的大概就是这几个:

    

  我把目录安排成这样。然后添加include路径:

  

  直接编译会出现这样的错误:

  core\stm32f10x.h(96): error:  #35: #error directive: "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)"

  搜索一下,需要定义这样一个宏:STM32F10X_MD

  

  再次编译的时候出现这样一个错误:

  driver\misc.c(99): warning:  #223-D: function "assert_param" declared implicitly

  然后再添加这样一个宏:USE_STDPERIPH_DRIVER

  中间用空格隔开,其实我试验了一下用半角逗号隔开也是正常的

  

  这回编译就通过了。


但是,这其中有几个问题:

1、开始的时候我是想不包含stm32f10x_conf.h这个文件的,因为我发现里面基本上就是用来配置哪些驱动是需要的,哪些驱动是不需要的,我感觉直接在keil的工程文件管理里添加需要的c文件然后包含驱动的h文件就行了,比这样配置一个conf文件还方便。然后我发现在stm32f10x.h文件中有句这样的:

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

然后我发现USE_STDPERIPH_DRIVER宏基本上就是在这里用的,所以我果断不想定义USE_STDPERIPH_DRIVER宏了,这个stm32f10x_conf.h也不想用,结果发现还是不行,因为stm32f10x_conf.h里还有个管理debug模式的:

#ifdef  USE_FULL_ASSERT

/**
  * @brief  The assert_param macro is used for function's parameters check.
  * @param  expr: If expr is false, it calls assert_failed function which reports 
  *         the name of the source file and the source line number of the call 
  *         that failed. If expr is true, it returns no value.
  * @retval None
  */
  #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
  void assert_failed(uint8_t* file, uint32_t line);
#else
  #define assert_param(expr) ((void)0)
#endif /* USE_FULL_ASSERT */

懒得折腾了,还是默认这样吧。

2、暂时不写了,有点累了,得回去洗澡了。嘿嘿

 

 

posted @ 2013-03-08 21:22  fwindpeak  阅读(736)  评论(0编辑  收藏  举报