zoukankan      html  css  js  c++  java
  • 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、暂时不写了,有点累了,得回去洗澡了。嘿嘿

  • 相关阅读:
    cocos2d与cocos2d-X中的draw和update
    poj1673
    hdu2128之BFS
    常用的js效验
    OMCS的语音视频带宽占用
    UML类图详细介绍
    [置顶] 获取激活码,激活myeclipse
    CBO学习----03--选择率(Selectivity)
    notepad++ 文件对比插件
    永远不要在Linux 执行的 10 个最危险的命令
  • 原文地址:https://www.cnblogs.com/fwindpeak/p/2950318.html
Copyright © 2011-2022 走看看