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

【经验分享】STM32 system_stm32f10x.c文件分析

[复制链接]
STMCU小助手 发布时间:2021-11-28 22:00
startup_stm32f10x_md.s文件中,调用了一个叫SystemInit的函数,该函数其实在system_stm32f10x.c中定义,旨在初始化系统时钟、初始化外部SRAM、设置中断向量表地址。
  1. void SystemInit (void)
  2. {
  3.   /* 使能内部高速时钟 */
  4.   RCC->CR |= (uint32_t)0x00000001;


  5. #ifndef STM32F10X_CL
  6.   RCC->CFGR &= (uint32_t)0xF8FF0000;
  7. #else
  8.   RCC->CFGR &= (uint32_t)0xF0FF0000;
  9. #endif

  10.   /* 禁用PLL、禁用始时钟检测、禁用外部高速时钟 */
  11.   RCC->CR &= (uint32_t)0xFEF6FFFF;

  12.   /* 外部1-25M振荡器未被绕过 */
  13.   RCC->CR &= (uint32_t)0xFFFBFFFF;

  14.   /* USB预分频器PLL未分频、PLL倍频2、HSE未被分频、HSI/2作为PLL频率 */
  15.   RCC->CFGR &= (uint32_t)0xFF80FFFF;


  16. /* 禁用时钟中断寄存器 */

  17. #ifdef STM32F10X_CL
  18.   RCC->CR &= (uint32_t)0xEBFFFFFF;

  19.   RCC->CIR = 0x00FF0000;

  20.   RCC->CFGR2 = 0x00000000;
  21. #elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
  22.   RCC->CIR = 0x009F0000;

  23.   /* Reset CFGR2 register */
  24.   RCC->CFGR2 = 0x00000000;      
  25. #else
  26.   RCC->CIR = 0x009F0000;
  27. #endif /* STM32F10X_CL */


  28. /* 设置外部SRAM */
  29. #if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL)
  30.   #ifdef DATA_IN_ExtSRAM
  31.     SystemInit_ExtMemCtl();
  32.   #endif /* DATA_IN_ExtSRAM */
  33. #endif


  34. /* 配置系统时钟 */
  35.   SetSysClock();


  36. /*中断向量偏移地址设置 */

  37. #ifdef VECT_TAB_SRAM
  38.   SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
  39. #else
  40.   SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */
  41. #endif
  42. }
复制代码



收藏 评论0 发布时间:2021-11-28 22:00

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版