keil5以上版本开发stm32不需要定义STM32F10X_HD,USE_STDPERIPH_DRIVER

来源:互联网 发布:张艺谋李安知乎 编辑:程序博客网 时间:2024/05/16 22:04
用官方的库函数开发stm32时,不需要再c/c++选项卡定义STM32F10X_HD,USE_STDPERIPH_DRIVER也能编译成功,不会出现错误和警告,为什么呢?

我到stm32f10x.h文件去看时,发现多了几句话:
#if !defined  USE_STDPERIPH_DRIVER
  #ifdef _RTE_
    #include "RTE_Components.h"
    #ifdef RTE_DEVICE_STDPERIPH_FRAMEWORK
      #define USE_STDPERIPH_DRIVER
    #endif
  #endif
#endif

就是这几句话,程序自动帮我们定义了USE_STDPERIPH_DRIVER,因为我使用的是官方的pack,那么
 #ifdef _RTE_为真,然后就会包含头文件 #include "RTE_Components.h", 只要我们用官方提供的外设固件库,那么 #include "RTE_Components.h"文件里面就会生成相应的“宏变量”,然后就会定义#define USE_STDPERIPH_DRIVER,而不需要我们手动去定义。

STM32F10X_HD定义的地方我没找到,我用keil5以下版本和以上版本测试同一个程序,在c/c++选项卡里面什么也没有定义,那么结果是:keil5以下版本编译时出现了错误,而keil5以上的版本没出现错误,那么我猜想STM32F10X_HD宏定义是keil5以上版本特有的功能,当我们选好cpu时,自动就会定义相应的宏,我选的是stm32f103zet6,那么软件会自动定义STM32F10X_HD,以上是我的猜想。因为keil5以下版本测试相同的程序就会出错,而错误信息是:
#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL)
 #error "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)"
#endif
这就说明程序是没有定义STM32F10X_HD,而keil5以上版本却编译不出这样的错误,那就是keil5以上版本的软件能够根据cpu型号定义相应的宏。



【转自:http://blog.sina.com.cn/s/blog_dc9571b90102vhvu.html】
0 0
原创粉丝点击