你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于KEIL创建工程中的一些问题???有点不明白!!!

[复制链接]
小刀十六式 提问时间:2016-8-25 14:11 /
我在配置Keil的Preprocessor Symbols 选项的时候没有进行预处理USE_STDPERIPH_DRIVER和STM32F10X_MD(如图1)

根据头文件应该不会引用stm32f10x_conf.h啊。可是为什么就引用了(如图2)

还有设备密度我也没选。我就添加了文件。也没进行宏定义(如图1、图3、图4)。为什么中断自己能找到中断入口呢???


图1

图1

图2

图2

图3

图3

图4

图4
收藏 1 评论23 发布时间:2016-8-25 14:11

举报

23个回答
废鱼 回答时间:2016-8-26 14:32:46
是我自己写的。测试一下哪个定义了。后面的是工程配置选项中。
废鱼 回答时间:2016-8-26 14:17:43
我用一下方法找到定义了STM32F10X_MD,对这个RTE不熟,找不到在哪儿定义的。_RTE_就是你现在用到的驱动。
#if defined (STM32F10X_LD)
        #error "STM32F10X_LD"
#endif

#if defined (STM32F10X_LD_VL)
        #error "STM32F10X_LD_VL"
#endif
#if defined (STM32F10X_MD)
        #error "STM32F10X_MD"
#endif
#if defined (STM32F10X_MD_VL)
        #error "STM32F10X_MD_VL"
#endif
#if defined (STM32F10X_HD)
        #error "STM32F10X_HD"
#endif
#if defined (STM32F10X_HD_VL)
        #error "STM32F10X_HD_VL"
#endif
#if defined (STM32F10X_XL)
        #error "STM32F10X_XL"
#endif
#if defined (STM32F10X_CL)
        #error "STM32F10X_CL"
#endif
废鱼 回答时间:2016-8-26 09:26:53
我只是举例说明,楼主可以看一下到底是哪个地方对这个进行的处理。
废鱼 回答时间:2016-8-25 14:34:39
楼主可以查看一下,如果没有定义,在其他的文件中也会做处理。
中断接口在.s文件中已经声明了。
小刀十六式 回答时间:2016-8-25 14:51:16
安 发表于 2016-8-25 14:34
楼主可以查看一下,如果没有定义,在其他的文件中也会做处理。
中断接口在.s文件中已经声明了。 ...

找到了USE_STDPERIPH_DRIVER 的预处理。但是好像没有找到STM32F10X_MD的预处理。KEIL-5好像不用预处理STM32F10X_MD???KEIL4可不可以也不写STM32F10X_MD???
废鱼 回答时间:2016-8-25 14:52:29
有,楼主可以看一下10x.h文件。
小刀十六式 回答时间:2016-8-25 15:29:16
安 发表于 2016-8-25 14:52
有,楼主可以看一下10x.h文件。

没找到#define STM32F10X_MD。。是stm32f103x.h吗?第几行啊?
废鱼 回答时间:2016-8-25 16:30:47
楼主看一下,仔细看开头的几行,我的版本可能和你的不一样。但是都有对应的处理的。默认的芯片类型等。比如下面的代码:

#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)
  /* #define STM32F10X_LD */     /*!< STM32F10X_LD: STM32 Low density devices */
  /* #define STM32F10X_LD_VL */  /*!< STM32F10X_LD_VL: STM32 Low density Value Line devices */  
  /* #define STM32F10X_MD */     /*!< STM32F10X_MD: STM32 Medium density devices */
  /* #define STM32F10X_MD_VL */  /*!< STM32F10X_MD_VL: STM32 Medium density Value Line devices */  
  /* #define STM32F10X_HD    */  /*!< STM32F10X_HD: STM32 High density devices */
  /* #define STM32F10X_HD_VL */  /*!< STM32F10X_HD_VL: STM32 High density value line devices */  
  /* #define STM32F10X_XL */     /*!< STM32F10X_XL: STM32 XL-density devices */
  /* #define STM32F10X_CL */     /*!< STM32F10X_CL: STM32 Connectivity line devices */
#endif
小刀十六式 回答时间:2016-8-25 17:08:32
本帖最后由 小刀十六式 于 2016-8-25 17:16 编辑
安 发表于 2016-8-25 16:30
楼主看一下,仔细看开头的几行,我的版本可能和你的不一样。但是都有对应的处理的。默认的芯片类型等。比如 ...

嗯!#if !defined 预编译。假如STM32F10X的这些设备密度都没有定义就执行下面!可是下面都是注释掉的啊!
所以还是没有#defined STM32F10X_MD
小刀十六式 回答时间:2016-8-26 10:53:48
安 发表于 2016-8-26 09:26
我只是举例说明,楼主可以看一下到底是哪个地方对这个进行的处理。

搜了一下。有宏定义的就只有你写的这里了。

/* #define STM32F10X_MD */     /*!< STM32F10X_MD: STM32 Medium density devices */
废鱼 回答时间:2016-8-26 10:56:49
把你工程上传一下
小刀十六式 回答时间:2016-8-26 11:56:51
安 发表于 2016-8-26 10:56
把你工程上传一下

#if !defined  USE_STDPERIPH_DRIVER
/**
* @brief Comment the line below if you will not use the peripherals drivers.
   In this case, these drivers will not be included and the application code will
   be based on direct access to peripherals registers
   */
  #ifdef _RTE_
    #include "RTE_Components.h"
    #ifdef RTE_DEVICE_STDPERIPH_FRAMEWORK
      #define USE_STDPERIPH_DRIVER
    #endif
  #endif
#endif

这是定义USE_STDPERIPH_DRIVER。这个#ifdef _RTE_
这个 _RTE_ 是什么???

STM32F103_DEMO.rar

下载

4.2 MB, 下载次数: 1, 下载积分: ST金币 -1

废鱼 回答时间:2016-8-26 14:25:00
注意看工程配置的,C++和ASM下面有这么几句话:

-D__UVISION_VERSION="517" -D_RTE_ -DSTM32F10X_MD -o ".\Objects\*.o" --omf_browse ".\Objects\*.crf" --depend ".\Objects\*.d"

--pd "__UVISION_VERSION SETA 517" --pd "_RTE_ SETA 1" --pd "STM32F10X_MD SETA 1" --list ".\Listings\*.lst" --xref -o "*.o" --depend "*.d"
小刀十六式 回答时间:2016-8-26 14:28:30
安 发表于 2016-8-26 14:17
我用一下方法找到定义了STM32F10X_MD,对这个RTE不熟,找不到在哪儿定义的。_RTE_就是你现在用到的驱动。
# ...

#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
根据上面这段话看错应该是定义了的!不过在工程中我实在没找到!包括您的那几句!。我是在KEIL默认创建的工程里找的!
12下一页

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版