http://bbs.21ic.com/icview-790448-1-1.html
ST公司提供STM32F0xx的頭文件STM32F0xx.h,編譯器都要定義一個宏:USE_STDPERIPH_DRIVER,如果不定義它 ---- 照ST公司的做法,就會出現問題,如
實際上,打開頭文件研究一下就知道,關係到這個宏的地方只有兩處
第一處是:
-
#if !defined USE_STDPERIPH_DRIVER
-
/**
-
* [url=home.php?mod=space&uid=247401]@brief[/url] 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
-
*/
-
/*#define USE_STDPERIPH_DRIVER*/
-
#endif /* USE_STDPERIPH_DRIVER */
第二處是:
-
第二處是:
-
-
#ifdef USE_STDPERIPH_DRIVER
-
#include "stm32f0xx_conf.h"
-
#endif
-
複製代碼
而stm32f0xx_conf.h頭文件的除了包含所有硬件資源的頭文件外,還包含有一個宏定義:
-
#include "stm32f0xx_adc.h"
-
#include "stm32f0xx_cec.h"
-
#include "stm32f0xx_crc.h"
-
……
-
-
-
/* Exported macro ------------------------------------------------------------*/
-
#ifdef USE_FULL_ASSERT
-
-
/**
-
* [url=home.php?mod=space&uid=247401]@brief[/url] 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 */
複製代碼