您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > STM32-时钟配置
04面向库文件函数的程序设计-时钟配置,外设复位,时钟管理Page2本章主要内容stm32时钟系统结构RCC寄存器结构stm32f10x_rcc.h解析RCC库函数时钟配置流程时钟配置举例Page3stm32时钟系统结构图HSIRC8MHzHSEOSCOSC_INOSC_OUTMCOSYSCLKHSIHSEPLLCLK÷2APB1PrescalerTimer2,3,4Multipler×1or×2TIMxClkPCLK1upto36MHzAPB2PrescalerADCPrescalerTimer1Multipler×1or×2TIM1ClkPCLK2upto72MHzADCClk÷128RTCClkIWDGClkLSEOSCOSC32_INOSC32_OUT32.768kHzUSBPrescaler÷1/÷1.5USBClk48MHz48M/72MHzAHBPrescalerHCLKupto72MHzLSIRC~40kHz÷2÷2PLLPLLCLKCSSSYSCLK系统时钟upto72MHz时钟监视系统一旦HSE失效则自动切换至SYSCLK←HSI内置RC振荡器可被关闭晶体振荡器可被关闭或旁路PLL可关闭或x2...x16倍频AHB预分频,9种分频因子1,2,4,8,16,64,128,256,512APB预分频,5种分频因子1,2,4,8,16ADC预分频,4种分频因子2,4,6,8APB预分频系数大于1时×2Page4HSIRC8MHzHSEOSCOSC_INOSC_OUTMCOSYSCLKHSIHSEPLLCLK÷2APB1PrescalerTimer2,3,4Multipler×1or×2TIMxClkPCLK1upto36MHzAPB2PrescalerADCPrescalerTimer1Multipler×1or×2TIM1ClkPCLK2upto72MHzADCClk÷128RTCClkIWDGClkLSEOSCOSC32_INOSC32_OUT32.768kHzUSBPrescaler÷1/÷1.5USBClk48MHz48M/72MHzAHBPrescalerHCLKupto72MHzLSIRC~40kHz÷2÷2PLLPLLCLKCSSSYSCLK系统时钟upto72MHzvoidRCC_HSEConfig(u32RCC_HSE)参数:RCC_HSE-RCC_HSE_OFFHSE晶振OFF-RCC_HSE_ONHSE晶振ON-RCC_HSE_BypassHSE晶振被外部时钟旁路ErrorStatusRCC_WaitForHSEStartUp(void)返回值:ErrorStatus-ERRORHSE起振失败-SUCCESSHSE成功起振voidRCC_PLLConfig(u32RCC_PLLSource,u32RCC_PLLMul)参数:RCC_PLLSourcePLL的输入时钟源-RCC_PLLSource_HSI_Div2PLL的输入时钟=HSI时钟频率除以2-RCC_PLLSource_HSE_Div1PLL的输入时钟=HSE时钟频率-RCC_PLLSource_HSE_Div2PLL的输入时钟=HSE时钟频率除以2RCC_PLLMul:PLL倍频系数-RCC_PLLMul_2PLL输入时钟x2-...-RCC_PLLMul_16PLL输入时钟x16voidRCC_PLLCmd(FunctionalStateNewState)参数:NewState-ENABLE启动PLL-DISABLE禁用PLLFlagStatusRCC_GetFlagStatus(u8RCC_FLAG)参数:RCC_FLAG-RCC_FLAG_PLLRDYPLL就绪返回值:FlagStatus-RESETPLL未启动-SETPLL启动Page5HSIRC8MHzHSEOSCOSC_INOSC_OUTMCOSYSCLKHSIHSEPLLCLK÷2APB1PrescalerTimer2,3,4Multipler×1or×2TIMxClkPCLK1upto36MHzAPB2PrescalerADCPrescalerTimer1Multipler×1or×2TIM1ClkPCLK2upto72MHzADCClk÷128RTCClkIWDGClkLSEOSCOSC32_INOSC32_OUT32.768kHzUSBPrescaler÷1/÷1.5USBClk48MHz48M/72MHzAHBPrescalerHCLKupto72MHzLSIRC~40kHz÷2÷2PLLPLLCLKCSSSYSCLK系统时钟upto72MHzvoidRCC_SYSCLKConfig(u32RCC_SYSCLKSource)参数:RCC_SYSCLKSource用作系统时钟的时钟源-RCC_SYSCLKSource_HSI选择HSI作为系统时钟-RCC_SYSCLKSource_HSE选择HSE作为系统时钟-RCC_SYSCLKSource_PLLCLK选择PLL作为系统时钟voidRCC_HCLKConfig(u32RCC_HCLK)参数:RCC_HCLKAHB分频系数-RCC_SYSCLK_Div1AHB时钟=系统时钟-RCC_SYSCLK_Div2AHB时钟=系统时钟/2-RCC_SYSCLK_Div4AHB时钟=系统时钟/4-RCC_SYSCLK_Div8AHB时钟=系统时钟/8-RCC_SYSCLK_Div16AHB时钟=系统时钟/16-RCC_SYSCLK_Div64AHB时钟=系统时钟/64-RCC_SYSCLK_Div128AHB时钟=系统时钟/128-RCC_SYSCLK_Div256AHB时钟=系统时钟/256-RCC_SYSCLK_Div512AHB时钟=系统时钟/512voidRCC_PCLK1Config(u32RCC_PCLK1)参数:RCC_PCLK1APB1分频系数-RCC_HCLK_Div1APB2时钟=HCLK-RCC_HCLK_Div2APB2时钟=HCLK/2-RCC_HCLK_Div4APB2时钟=HCLK/4-RCC_HCLK_Div8APB2时钟=HCLK/8-RCC_HCLK_Div16APB2时钟=HCLK/16voidRCC_PCLK2Config(u32RCC_PCLK2)参数:RCC_PCLK2APB2分频系数-RCC_HCLK_Div1APB2时钟=HCLK-RCC_HCLK_Div2APB2时钟=HCLK/2-RCC_HCLK_Div4APB2时钟=HCLK/4-RCC_HCLK_Div8APB2时钟=HCLK/8-RCC_HCLK_Div16APB2时钟=HCLK/16u8RCC_GetSYSCLKSource(void)返回值:用作系统时钟的时钟源:-0x00:HSI作为系统时钟-0x04:HSE作为系统时钟-0x08:PLL作为系统时钟Page6Page7RCC寄存器结构stm32f10x.htypedefstruct{vu32CR;vu32CFGR;vu32CIR;vu32APB2RSTR;vu32APB1RSTR;vu32AHBENR;vu32APB2ENR;vu32APB1ENR;vu32BDCR;vu32CSR;}RCC_TypeDef;//时钟控制寄存器//时钟配置寄存器//时钟中断寄存器//APB2外设复位寄存器//APB1外设复位寄存器//AHB外设时钟使能寄存器//APB2外设时钟使能寄存器//APB1外设时钟使能寄存器//备份域控制寄存器//控制/状态寄存器Page8stm32f10x_rcc.h解析__46~53定义时钟结构体,返回各时钟频率。Page9stm32f10x_rcc.h解析__67~71定义HSE开/关/旁路宏用于参数正确性验证,参考assert_param函数RCC_CRPage10stm32f10x_rcc.h解析__81~93定义PLL时钟源宏RCC_CFGRPage11stm32f10x_rcc.h解析__102~140定义PLL倍频系数宏RCC_CFGRPage12stm32f10x_rcc.h解析__148~282定义STM32F10X_xx_VL,STM32F10X_CL预分频,锁相环2,3倍频系数等宏,与STM32F10X_HD无关。Page13stm32f10x_rcc.h解析__289~294定义系统时钟源宏RCC_CFGRPage14stm32f10x_rcc.h解析__303~316定义AHB分频系数宏RCC_CFGRPage15stm32f10x_rcc.h解析__325~333定义APB分频系数宏RCC_CFGRPage16stm32f10x_rcc.h解析__341~363定义RCC中断源宏RCC_CIRPage17stm32f10x_rcc.h解析__370~434定义USB时钟宏定义I2S2,I2S3时钟宏定义ADC时钟宏Page18stm32f10x_rcc.h解析__443~447定义LSE开/关/旁路宏RCC_BDCRPage19stm32f10x_rcc.h解析__456~461定义RTC时钟源宏RCC_BDCRPage20stm32f10x_rcc.h解析__470~488定义AHB外设时钟使能宏RCC_AHBENRPage21stm32f10x_rcc.h解析__497~519定义APB2外设时钟使能宏数值设定参考寄存器RCC_APB2ENR位结构Page22stm32f10x_rcc.h解析__528~554定义APB1外设时钟使能宏数值设定参考寄存器RCC_APB1ENR位结构Page23stm32f10x_rcc.h解析__564~585定义MCO输出时钟源宏RCC_CFGR思考题:这里的数值为什么定义成8位,而不是32位格式,如定义RCC_MCO_SYSCLK为((uint32_t)0x04000000)Page24stm32f10x_rcc.h解析__595~626定义RCC状态查询宏用作函数RCC_GetFlagStatus的参数,如:RCC_GetFlagStatus(RCC_FLAG_HSERDY);如果HSE时钟就绪则返回SET,否则返回RESET。Page25stm32f10x_rcc.h解析__647~708函数申明Page26RCC库函数函数名描述RCC_DeInit将外设RCC寄存器重设为缺省值RCC_HSEConfig设置外部高速晶振(HSE)RCC_WaitForHSEStartUp等待HSE起振RCC_AdjustHSICalibrationValue调整内部高速晶振(HSI)校准值RCC_HSICmd使能或者失能内部高速晶振(HSI)RCC_PLLConfig设置PLL时钟源及倍频系数RCC_PLLCmd使能或者失能PLLRCC_SYSCLKConfig设置系统时钟(SYSCLK)RCC_GetSYSCLKSource返回用作系统时钟的时钟源RCC_HCLKConfig设置AHB时钟(HCLK)RCC_PCLK1Config设置低速APB时钟(PCLK1)RCC_PCLK2Config设置高速APB时钟(PCLK2)RCC_ITConfig使能或者失能指定的RCC中断RCC_USBCLKConfig设置USB时钟(USBCLK)RCC_ADCCLKConfig设置ADC时钟(ADCCLK)RCC_LSEConfig设置外部低速晶振(LSE)Page27RCC库函数函数名描述RCC_LSICmd使能或者失能内部低速晶振(LSI)RCC_RTCCLKConfig设置RTC时钟(RTCCLK)RCC_RTCCLKCmd使能或者失能RTC时钟RCC_GetClocksFreq返回不同片上时钟的频率RCC_AHBPeriphClockCmd使能或
本文标题:STM32-时钟配置
链接地址:https://www.777doc.com/doc-4753049 .html