SystemInit()函数的结构分析
来源:互联网 发布:中国移动4g网络畅玩包 编辑:程序博客网 时间:2024/06/11 16:15
具体的分析见:http://wenku.baidu.com/view/3b995d708e9951e79b8927f5.html
http://blog.sina.com.cn/s/blog_60e5783601017vbt.html
系统函数调用顺序startup_stm32f10x_cl.s→ SystemInit() → SetSysClock()→ SetSysClockTo72()
总结:开始是在keil4里看代码,很混乱,后来把他粘到Notepad编辑器,一点击就可以看出这个子函数到哪结束
#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)/* #define SYSCLK_FREQ_HSE HSE_VALUE */ #define SYSCLK_FREQ_24MHz 24000000#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#endif
下面定义的SystemCoreClock 变量是为了方便取出几种情况下系统时钟的实际值,例SYSCLK_FREQ_24MHz 也就是24000000。
#ifdef SYSCLK_FREQ_HSE uint32_t SystemCoreClock = SYSCLK_FREQ_HSE; /*!< System Clock Frequency (Core Clock) */#elif defined SYSCLK_FREQ_24MHz uint32_t SystemCoreClock = SYSCLK_FREQ_24MHz; /*!< System Clock Frequency (Core Clock) */#elif defined SYSCLK_FREQ_36MHz uint32_t SystemCoreClock = SYSCLK_FREQ_36MHz; /*!< System Clock Frequency (Core Clock) */#elif defined SYSCLK_FREQ_48MHz uint32_t SystemCoreClock = SYSCLK_FREQ_48MHz; /*!< System Clock Frequency (Core Clock) */#elif defined SYSCLK_FREQ_56MHz uint32_t SystemCoreClock = SYSCLK_FREQ_56MHz; /*!< System Clock Frequency (Core Clock) */#elif defined SYSCLK_FREQ_72MHz uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz; /*!< System Clock Frequency (Core Clock) */#else /*!< HSI Selected as System Clock source */ uint32_t SystemCoreClock = HSI_VALUE; /*!< System Clock Frequency (Core Clock) */#endif
static void SetSysClock(void){#ifdef SYSCLK_FREQ_HSE SetSysClockToHSE();#elif defined SYSCLK_FREQ_24MHz SetSysClockTo24();#elif defined SYSCLK_FREQ_36MHz SetSysClockTo36();#elif defined SYSCLK_FREQ_48MHz SetSysClockTo48();#elif defined SYSCLK_FREQ_56MHz SetSysClockTo56(); #elif defined SYSCLK_FREQ_72MHz SetSysClockTo72();#endif /* If none of the define above is enabled, the HSI is used as System clock source (default after reset) */ }
#ifdef SYSCLK_FREQ_HSE/** * @brief Selects HSE as System clock source and configure HCLK, PCLK2 * and PCLK1 prescalers. * @note This function should be used only after reset. * @param None * @retval None */static void SetSysClockToHSE(void){ ......}
#elif defined SYSCLK_FREQ_24MHz/** * @brief Sets System clock frequency to 24MHz and configure HCLK, PCLK2 * and PCLK1 prescalers. * @note This function should be used only after reset. * @param None * @retval None */static void SetSysClockTo24(void){ ........}
#elif defined SYSCLK_FREQ_36MHz/** * @brief Sets System clock frequency to 36MHz and configure HCLK, PCLK2 * and PCLK1 prescalers. * @note This function should be used only after reset. * @param None * @retval None */static void SetSysClockTo36(void){ ......}省略几个......
#elif defined SYSCLK_FREQ_72MHz/** * @brief Sets System clock frequency to 72MHz and configure HCLK, PCLK2 * and PCLK1 prescalers. * @note This function should be used only after reset. * @param None * @retval None */static void SetSysClockTo72(void){ .......}这样结构就很明晰了。
- SystemInit()函数的结构分析
- LPC1788 SystemInit函数分析
- stm32的SystemInit()函数(转)
- STM32之SystemInit()函数的探讨
- stm32启动文件详解及SystemInit函数分析
- STM32启动文件详解及SystemInit函数分析(转)
- STM32启动文件详解及SystemInit函数分析(转)
- STM32启动文件详解及SystemInit函数分析(转)
- [初始化函数]SystemInit()
- STM32F207(2) systemInit函数
- HR8P506,哪里冒出来的SystemInit函数,用库函数点灯again.
- SystemInit()实现的功能
- SystemInit
- 系统初始化函数SystemInit讲解
- STM32库函数SystemInit()的理解
- stm32库函数void SystemInit (void)分析
- STM32F4 RCC及SystemInit配置分析
- 第一个函数SystemInit()里面有些啥
- linux删除文件后没有释放空间
- 菜鸟编程之初始三层
- Android 小游戏之星陨大战 详解
- 浏览器上的音视频即时通讯应用开发
- 这个例子演示了如何创建一个父窗口部件和子窗口部件。
- SystemInit()函数的结构分析
- 程序员_Java基础之<十一>-IO流<2>File流
- snoopy(强大的PHP采集类) 实例应用
- gcc产生的汇编代码
- 强制键盘隐藏
- hdu4067 费用流
- Json的解析
- 删除Outlook自动记录的联系人地址(推荐的联系人)
- php生成标准化的excel——PHPExcel常用方法汇总