打印

调用#include "stm32f10x.h"后库函数配置了一个怎样的时钟环境?

[复制链接]
3336|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 355643303 于 2013-1-23 19:02 编辑

#include "stm32f10x.h"                                                                                                                                        //                                                                                                                               #include "stm32f10x_conf.h"                                                                                                                 //
  int main(void)                                                                                               //
     {      while(1)                                                                                       //
         {    }                                                                                                  //
    }                                                                                                              //
我想知道调用#include "stm32f10x.h"后库函数配置了一个怎样的时钟环境,头文件里调用了一个SYSInit()初始化函数,




#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL) //这段意思不明白,如果这段怎样 执行宏定义24MHZ,                                  
/* #define SYSCLK_FREQ_HSE    HSE_VALUE */         未宏定义                                                                                                   ,不然宏定义72MHZ  ?????                                                                 
#define SYSCLK_FREQ_24MHz  24000000                 定义A
#else
/* #define SYSCLK_FREQ_HSE    HSE_VALUE */
/* #define SYSCLK_FREQ_24MHz  24000000 */
/* #define SYSCLK_FREQ_36MHz  36000000 */                    
/* #define SYSCLK_FREQ_48MHz  48000000 */
/* #define SYSCLK_FREQ_56MHz  56000000 */
#define SYSCLK_FREQ_72MHz  72000000                  定义B    不清楚宏定义了哪个A,还是B,网上说定义的是72MHZ,那24MHZ没定义啊
#endif


static void SetSysClock(void);                 //在系统初始化时调用的函数
#ifdef SYSCLK_FREQ_HSE                    //未宏定义  static void SetSysClockToHSE(void);  //不执行#elif defined SYSCLK_FREQ_24MHz  static void SetSysClockTo24(void);#elif defined SYSCLK_FREQ_36MHz  static void SetSysClockTo36(void);#elif defined SYSCLK_FREQ_48MHz  static void SetSysClockTo48(void);#elif defined SYSCLK_FREQ_56MHz  static void SetSysClockTo56(void);  #elif defined SYSCLK_FREQ_72MHz  static void SetSysClockTo72(void);#endif







沙发
uet_cache| | 2013-1-23 19:03 | 只看该作者
那个时钟配置跟你的宏定义器件类型有关。这个宏定义放在OPTION配置里的相应页面里,定义好了,这个时钟配置才有效。

使用特权

评论回复
板凳
logokfu| | 2013-1-23 19:46 | 只看该作者
本帖最后由 **kfu 于 2013-1-23 19:47 编辑

比如你是用的互联型的芯片,那么你就会有这个宏定义,自然会选择72MHz进行编译了。

没有什么可以纠结的。

使用特权

评论回复
地板
355643303|  楼主 | 2013-1-23 20:07 | 只看该作者
我的配置如图所示,但我不知和时钟的关系,知道第二个是中等容量MCU的意思,二楼的配置在哪里,
那个文件里找到了IMPORT  __main
     IMPORT  SystemInit
                 LDR     R0, =SystemInit
                 BLX     R0
                 LDR     R0, =__main
                 BX      R0
                 ENDP

可能疑惑还是在宏定义,到底定义的是24MHZ还是72MHZ,解释下24MHZ怎么没定义到

0SF$RBVS(Z0B~G_~GK)GC_M.jpg (127.28 KB )

0SF$RBVS(Z0B~G_~GK)GC_M.jpg

使用特权

评论回复
5
logokfu| | 2013-1-23 20:45 | 只看该作者
本帖最后由 **kfu 于 2013-1-23 20:47 编辑
355643303 发表于 2013-1-23 20:07
我的配置如图所示,但我不知和时钟的关系,知道第二个是中等容量MCU的意思,二楼的配置在哪里,
那个文件里 ...

这里已经说得很清楚了,既然楼主用的是STM32F10X_MD,那么自然是选用的72MHz了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:立足根基,放眼未来!

4

主题

94

帖子

1

粉丝