关于条件编译#if,#if defined

2019-07-20 10:08发布

以前只写过51单片机的一些简单控制程序,没有用过#if之类的条件编译。现在刚接触ARM编程,很多问题不懂,大家不要嫌啊。
买了一块407探索者的开发板,看例程时,很多条件编译语句,也就上网猛补这方面知识。
《STM32F4开发指南-库函数版本》,在64页,关于把 PLL 第一级分频系数 M修改为8这部分。
下面是system_stm32f4xx.c关于配置PLL的代码:
#if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx) || defined (STM32F401xx)
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
#define PLL_M      8

第一句:#if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx) || defined (STM32F401xx)
意思是如果宏定义过STM32F40_41xxx,STM32F427_437xxSTM32F429_439xx,STM32F401xx中的一个,则宏定义PLL_M为8。
应该没有理解错吧?
然后去找
宏定义STM32F40_41xxx的地方,只在stm32f4xx.h找到以下语句:
/* Old STM32F40XX definition, maintained for legacy purpose */
#ifdef STM32F40XX
  #define STM32F40_41xxx
#endif /* STM32F40XX */
这段的意思是如果STM32F40XX宏定义过,则宏定义STM32F40_41xxx,理解没错吧?
接着又去找
STM32F40XX的宏定义,没有找到。其他STM32F427_437xxSTM32F429_439xxSTM32F401xx类似。

那么STM32F40_41xxx在哪里被宏定义的?或者STM32F40XX在哪里被宏定义过?



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
hyghyg1234
1楼-- · 2019-07-20 10:38


瞧在这。
XXDJ
2楼-- · 2019-07-20 15:53
 精彩回答 2  元偷偷看……
正点原子
3楼-- · 2019-07-20 20:31
 精彩回答 2  元偷偷看……
XXDJ
4楼-- · 2019-07-21 02:13
谢谢!
暮雨潇潇
5楼-- · 2019-07-21 03:40
 精彩回答 2  元偷偷看……
lyconly1
6楼-- · 2019-07-21 05:32
学习模板时就在想为啥要在编译设置里复制STM32F40_41xxx,USE_STDPERIPH_DRIVER 现在明白了。感谢楼主与原子大神

一周热门 更多>