STM32时钟初始化函数SysInit详解

STM32时钟初始化函数SysInit详解

ID:38282242

大小:16.82 KB

页数:5页

时间:2019-06-07

STM32时钟初始化函数SysInit详解_第1页
STM32时钟初始化函数SysInit详解_第2页
STM32时钟初始化函数SysInit详解_第3页
STM32时钟初始化函数SysInit详解_第4页
STM32时钟初始化函数SysInit详解_第5页
资源描述:

《STM32时钟初始化函数SysInit详解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、花了一天的时间,总算是了解了SystemInit()函数实现了哪些功能,初学STM32,,现记录如下(有理解错误的地方还请大侠指出):使用的是3.5的库,用的是STM32F107VC,开发环境RVMDK4.23我已经定义了STM32F10X_CL,SYSCLK_FREQ_72MHz函数调用顺序:startup_stm32f10x_cl.s(启动文件)→SystemInit()→  SetSysClock()→SetSysClockTo72()初始化时钟用到的RCC寄存器复位值:RCC_CR=0x0000xx83;RCC_CFGR=0x00000000;RCC_CI

2、R=0x00000000;RCC_CFGR2=0x00000000;SystemInit()在调用SetSysClock()之前RCC寄存器的值如下(都是一些与运算,或运算,在此就不赘述了):RCC->CR=0x00000083;  RCC->CIR=0x00FF0000;RCC->CFGR2=0x00000000;至于这些寄存器都代表着什么意思,详见芯片资料RCC寄存器,该文重点不在此处;SetSysClock()函数如下:staticvoidSetSysClock(void){#ifdefSYSCLK_FREQ_HSE  SetSysClockToHSE();

3、#elifdefinedSYSCLK_FREQ_24MHz  SetSysClockTo24();#elifdefinedSYSCLK_FREQ_36MHz  SetSysClockTo36();#elifdefinedSYSCLK_FREQ_48MHz  SetSysClockTo48();#elifdefinedSYSCLK_FREQ_56MHz  SetSysClockTo56();  #elifdefinedSYSCLK_FREQ_72MHz//我的定义的是SYSCLK_FREQ_72MHz,所以调用SetSysClockTo72()  SetSysClo

4、ckTo72();#endif}SetSysClockTo72()函数如下:staticvoidSetSysClockTo72(void){  __IOuint32_tStartUpCounter=0,HSEStatus=0;  /*SYSCLK,HCLK,PCLK2andPCLK1configuration---------------------------*/     /*EnableHSE*/     RCC->CR

5、=((uint32_t)RCC_CR_HSEON);  /*WaittillHSEisreadyandifTimeoutisreachede

6、xit*/  do  {  HSEStatus=RCC->CR&RCC_CR_HSERDY;  StartUpCounter++;    }while((HSEStatus==0)&&(StartUpCounter!=HSE_STARTUP_TIMEOUT));  if((RCC->CR&RCC_CR_HSERDY)!=RESET)  {  HSEStatus=(uint32_t)0x01;  }  else  {  HSEStatus=(uint32_t)0x00;  }    if(HSEStatus==(uint32_t)0x01)  {  /*Enable

7、PrefetchBuffer*/  FLASH->ACR

8、=FLASH_ACR_PRFTBE;  /*Flash2waitstate*/  FLASH->ACR&=(uint32_t)((uint32_t)~FLASH_ACR_LATENCY);  FLASH->ACR

9、=(uint32_t)FLASH_ACR_LATENCY_2;     /*HCLK=SYSCLK*/  RCC->CFGR

10、=(uint32_t)RCC_CFGR_HPRE_DIV1;      /*PCLK2=HCLK*/  RCC->CFGR

11、=(uint32_t)RCC_CFGR_PPRE

12、2_DIV1;     /*PCLK1=HCLK*/  RCC->CFGR

13、=(uint32_t)RCC_CFGR_PPRE1_DIV2;#ifdefSTM32F10X_CL  /*ConfigurePLLs------------------------------------------------------*/  /*PLL2configuration:PLL2CLK=(HSE/5)*8=40MHz*/  /*PREDIV1configuration:PREDIV1CLK=PLL2/5=8MHz*/  RCC->CFGR2&=(uint32_t)~(RCC

14、_CFGR

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。