个时钟配置寄存器RCCcfgr课件_第1页
个时钟配置寄存器RCCcfgr课件_第2页
个时钟配置寄存器RCCcfgr课件_第3页
个时钟配置寄存器RCCcfgr课件_第4页
个时钟配置寄存器RCCcfgr课件_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、最小系统最小系统指ARM能够运行所需要的最基本的条件包括:电源,时钟源,复位电路,调试接口,ARM处理器(自带128k闪存,20kSRAM)STM32F103VBT6电源时钟源复位电路调试电源芯片要求2.03.6V的操作电压(VDD)当主电源VDD关闭时,实时时钟(RTC)和备用寄存器可以从VBAT供电为提高转换精度,ADC可以有一个独立的电源供应,以不受PCB噪音的干扰电源方案电路由稳定的电源VDD供电 如果使用ADC,VDD的范围必须在2.4V到3.6V之间,否则为2V到3.6V VDD引脚必须连接到带外部稳定电容的VDD电源。 (5个100nF的陶瓷电容和一个钽电容(最小值4.7F,典型

2、值10F) VBAT引脚必须被连接到外部电池(1.8V VBAT CR | =0 x00010000;使能while(!RCC-CR.HSERDY);等待RCC-CFGR=0 x01;选择2、设置外部晶振提供PLL作为系统时钟RCC-CR | =0 x00010000;使能HSEwhile(!RCC-CR.HSERDY);等待RCC-CR | =0 x01000000;使能PLLwhile(!RCC-CR.PLLRDY);等待RCC-CFGR=0 x10;选择PLL例:设置PLL的时钟为48MHz分析:外部时钟为8M,因此,需要PLL倍频6倍输出RCC-CFGR |=0 x0010 0000时

3、钟中断寄存器 (RCC_CIR)偏移地址: 08h复位值: 0000 0000hAPB2 外设复位寄存器 (RCC_APB2RSTR)偏移地址: 0Ch复位值: 0000 0000hAPB1 外设复位寄存器 (RCC_APB1RSTR)偏移地址:10h复位值:0000 0000hAHB 外设时钟使能寄存器 (RCC_AHBENR)偏移地址:14h复位值:0000 0014hAHB 外设时钟使能寄存器 (RCC_AHBENR)偏移地址:14h复位值:0000 0014hAPB2 外设时钟使能寄存器(RCC_APB2ENR)偏移地址:18h复位值:0000 0000h访问:字,半字和字节访问APB

4、1 外设时钟使能寄存器(RCC_APB1ENR)偏移地址:1Ch复位值:0000 0000hAPB2 外设时钟使能寄存器(RCC_APB2ENR)例:使能USART1的时钟RCC-APB2ENR |= 0 x4000;同时使能USART1,sp1,TIM1和ADC2的时钟RCC-APB2ENR |= 0 x5B00;备份域控制寄存器 (RCC_BDCR)偏移地址:20h复位值:0000 0000h,只能由备份域复位有效复位控制/状态寄存器 (RCC_CSR)偏移地址:24h复位值:0C00 0000h复位标志及低速时钟就绪使能控制时钟安全系统(CSS)时钟安全系统可以通过软件被激活。一旦其被激

5、活,时钟监测器将在HSE振荡器启动延迟后被使能,并在HSE时钟关闭后关闭。作用:如果HSE时钟发生故障,此振荡器自动地被关闭,时钟失效事件将被送到高级定时器TIM1的断路输入端,并产生时钟安全中断CSSI,允许软件完成营救操作。此CSSI中断被连接到Cortex-M3 NMI的中断。注意: 一旦CSS被激活,并且HSE时钟出现故障,CSS中断就产生,并且NMI也自动产生。NMI将被不断执行,直到CSS中断挂起位被清除。因此,在NMI的处理程序中必须通过设置时钟中断寄存器(RCC_CIR)里的CSSC位来清除CSS中断。如果HSE振荡器被直间或间接地作为系统时钟来用的话,(间接的意思是:它被作为

6、PLL输入时钟,并且PLL时钟被作为系统时钟),时钟故障将导致系统时钟自动切换到HSI振荡器,同时外部HSE振荡器被关闭。在时钟失效时,如果HSE振荡器时钟(被分频或未被分频)是用作系统时钟的PLL的输入时钟,PLL也将被关闭。RCC库函数RCC寄存器结构,RCC_TypeDeff,在文件“stm32f10 x_map.h”中定义如下: typedef struct vu32 CR; vu32 CFGR; vu32 CIR; vu32 APB2RSTR; vu32 APB1RSTR; vu32 AHBENR; vu32 APB2ENR; vu32 APB1ENR; vu32 BDCR; vu3

7、2 CSR; RCC_TypeDef; RCC外设声明于文件“stm32f10 x_map.h”: #define PERIPH_BASE (u32)0 x40000000) #define APB1PERIPH_BASE PERIPH_BASE #define APB2PERIPH_BASE (PERIPH_BASE + 0 x10000) #define AHBPERIPH_BASE (PERIPH_BASE + 0 x20000) #define RCC_BASE (AHBPERIPH_BASE + 0 x1000) . #ifdef _RCC #define RCC (RCC_Type

8、Def *) RCC_BASE) #endif /*_RCC */ RCC库函数RCC库函数使用HSE时钟,程序设置时钟参数流程:1、将RCC寄存器重新设置为默认值 RCC_DeInit;2、打开外部高速时钟晶振HSE RCC_HSEConfig(RCC_HSE_ON);3、等待外部高速时钟晶振工作 HSEStartUpStatus = RCC_WaitForHSEStartUp();4、设置AHB时钟 RCC_HCLKConfig;5、设置高速APB时钟 RCC_PCLK2Config;6、设置低速APB时钟 RCC_PCLK1Config;7、设置PLL RCC_PLLConfig;8、打

9、开PLL RCC_PLLCmd(ENABLE);9、等待PLL工作 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) = RESET) 10、设置系统时钟 RCC_SYSCLKConfig;11、判断,直到PLL是系统时钟 while(RCC_GetSYSCLKSource() != 0 x08)12、打开要使用的外设时钟 RCC_APB2PeriphClockCmd()/RCC_APB1PeriphClockCmd()实验三 RCC时钟主程序:int main(void)#ifdef DEBUG debug();#endif /* Configure the

10、System clock frequency, HCLK, PCLK2 and PCLK1 prescalers */ SetSysClock();实验三 RCC时钟void SetSysClock(void) #if defined SYSCLK_HSE SetSysClockToHSE();#elif defined SYSCLK_FREQ_20MHz SetSysClockTo20();#elif defined SYSCLK_FREQ_36MHz SetSysClockTo36();#elif defined SYSCLK_FREQ_48MHz SetSysClockTo48();#e

11、lif 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) */ /#define SYSCLK_HSE/#define SYSCLK_FREQ_20MHz/#define SYSCLK_FREQ_36MHz/#define SYSCLK_FREQ_48MHz#define SYSCLK_FREQ_72MHzRCC-CFGR |=0 x00

12、1c 0000实验三 RCC时钟void SetSysClockTo72(void) /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration -*/ /* RCC system reset(for debug purpose) */ RCC_DeInit( ); /* Enable HSE */ RCC_HSEConfig(RCC_HSE_ON); /* Wait till HSE is ready */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); if (HSEStartUpStatus = SUCCESS)

13、/* Enable Prefetch Buffer */ FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); /* Flash 2 wait state */ FLASH_SetLatency(FLASH_Latency_2); /* HCLK = SYSCLK */ RCC_HCLKConfig(RCC_SYSCLK_Div1); /* PCLK2 = HCLK */ RCC_PCLK2Config(RCC_HCLK_Div1); void RCC_DeInit(void) /* Set HSION bit */ RCC-CR |= (

14、u32)0 x00000001; /* Reset SW1:0, HPRE3:0, PPRE12:0, PPRE22:0, ADCPRE1:0 and MCO2:0 bits */ RCC-CFGR &= (u32)0 xF8FF0000; /* Reset HSEON, CSSON and PLLON bits */ RCC-CR &= (u32)0 xFEF6FFFF; /* Reset HSEBYP bit */ RCC-CR &= (u32)0 xFFFBFFFF; /* Reset PLLSRC, PLLXTPRE, PLLMUL3:0 and USBPRE bits */ RCC-

15、CFGR &= (u32)0 xFF80FFFF; /* Disable all interrupts */ RCC-CIR = 0 x00000000;实验三 RCC时钟void SetSysClockTo72(void) /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration -*/ /* RCC system reset(for debug purpose) */ RCC_DeInit( ); /* Enable HSE */ RCC_HSEConfig(RCC_HSE_ON); /* Wait till HSE is ready */ HSESta

16、rtUpStatus = RCC_WaitForHSEStartUp(); if (HSEStartUpStatus = SUCCESS) /* Enable Prefetch Buffer */ FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); /* Flash 2 wait state */ FLASH_SetLatency(FLASH_Latency_2); /* HCLK = SYSCLK */ RCC_HCLKConfig(RCC_SYSCLK_Div1); /* PCLK2 = HCLK */ RCC_PCLK2Config(RCC_HCLK_Div1); void RCC_HSEConfig(u32 RCC_HSE)/* Reset HSEON bit */ RCC-CR &= CR_HSEON_Reset; /* Reset HSEBYP bit */ RCC-CR &= CR_HSEBYP_Reset;switch(RCC_HSE) c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论