版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、04 面向库文件函数的程序设计面向库文件函数的程序设计-时钟配置时钟配置,外设复位外设复位,时钟管理时钟管理Page 2本章主要内容本章主要内容stm32时钟系统结构RCC寄存器结构stm32f10 x_rcc.h解析RCC库函数时钟配置流程时钟配置举例Page 3stm32时钟系统结构图时钟系统结构图HSI RC 8MHzHSE OSCOSC_INOSC_OUTMCOSYSCLKHSIHSEPLLCLK2APB1PrescalerTimer2,3,4Multipler1 or 2TIMxClkPCLK1up to 36MHzAPB2PrescalerADCPrescalerTimer1Mul
2、tipler1 or 2TIM1ClkPCLK2up to 72MHzADCClk128RTCClkIWDGClkLSE OSCOSC32_INOSC32_OUT32.768kHzUSBPrescaler1/1.5USBClk48MHz48M/72M HzAHBPrescalerHCLKup to 72MHzLSI RC40kHz22PLLPLLCLKCSSSYSCLK系统时钟up to 72MHz时钟监视系统时钟监视系统一旦一旦HSEHSE失效则自动失效则自动切换至切换至SYSCLK HSISYSCLK HSI内置内置RCRC振荡器可振荡器可被关闭被关闭晶体振荡器可被关晶体振荡器可被关闭或旁
3、路闭或旁路PLLPLL可关闭或可关闭或x2.x16x2.x16倍频倍频AHBAHB预分频预分频,9,9种分频因子种分频因子1,2,4,8,16,64,128,256,512APBAPB预分频预分频, ,5 5种分频因子种分频因子1,2,4,8,16ADCADC预分频预分频, ,4 4种分频因子种分频因子2,4,6,8APBAPB预分频系数大于预分频系数大于1 1时时2 2Page 4HSI RC 8MHzHSE OSCOSC_INOSC_OUTMCOSYSCLKHSIHSEPLLCLK2APB1PrescalerTimer2,3,4Multipler1 or 2TIMxClkPCLK1up t
4、o 36MHzAPB2PrescalerADCPrescalerTimer1Multipler1 or 2TIM1ClkPCLK2up to 72MHzADCClk128RTCClkIWDGClkLSE OSCOSC32_INOSC32_OUT32.768kHzUSBPrescaler1/1.5USBClk48MHz48M/72M HzAHBPrescalerHCLKup to 72MHzLSI RC40kHz22PLLPLLCLKCSSSYSCLK系统时钟up to 72MHzvoid RCC_HSEConfig(u32 RCC_HSE)参数:RCC_HSE - RCC_HSE_OFF HS
5、E晶振OFF - RCC_HSE_ON HSE晶振ON - RCC_HSE_Bypass HSE晶振被外部时钟旁路 RCC_WaitForHSEStartUp(void) 返回值返回值:ErrorStatus - ERROR HSE起振失败 - SUCCESS HSE成功起振void RCC_PLLConfig(u32 RCC_PLLSource, u32 RCC_PLLMul) 参数参数:RCC_PLLSource PLL 的输入时钟源- RCC_PLLSource_HSI_Div2 PLL 的输入时钟 = HSI 时钟频率除以2 - RCC_PLLSource_HSE_Div1 PLL 的
6、输入时钟 = HSE时钟频率 - RCC_PLLSource_HSE_Div2 PLL 的输入时钟 = HSE 时钟频率除以2 RCC_PLLMul : PLL 倍频系数 - RCC_PLLMul_2 PLL 输入时钟x2- . - RCC_PLLMul_16 PLL 输入时钟x16void RCC_PLLCmd(FunctionalState NewState)参数参数:NewState- ENABLE 启动PLL- DISABLE 禁用PLL RCC_GetFlagStatus(u8 RCC_FLAG) 参数参数:RCC_FLAG- RCC_FLAG_PLLRDY PLL就绪 返回值:Fl
7、agStatus- RESETPLL未启动- SETPLL启动Page 5HSI RC 8MHzHSE OSCOSC_INOSC_OUTMCOSYSCLKHSIHSEPLLCLK2APB1PrescalerTimer2,3,4Multipler1 or 2TIMxClkPCLK1up to 36MHzAPB2PrescalerADCPrescalerTimer1Multipler1 or 2TIM1ClkPCLK2up to 72MHzADCClk128RTCClkIWDGClkLSE OSCOSC32_INOSC32_OUT32.768kHzUSBPrescaler1/1.5USBClk48
8、MHz48M/72M HzAHBPrescalerHCLKup to 72MHzLSI RC40kHz22PLLPLLCLKCSSSYSCLK系统时钟up to 72MHzvoid RCC_SYSCLKConfig(u32 RCC_SYSCLKSource)参数:RCC_SYSCLKSource 用作系统时钟的时钟源- RCC_SYSCLKSource_HSI 选择HSI作为系统时钟 - RCC_SYSCLKSource_HSE 选择HSE作为系统时钟 - RCC_SYSCLKSource_PLLCLK 选择PLL作为系统时钟 void RCC_HCLKConfig(u32 RCC_HCLK)
9、参数参数:RCC_HCLK AHB分频系数 - RCC_SYSCLK_Div1 AHB时钟 = 系统时钟 - RCC_SYSCLK_Div2 AHB时钟 = 系统时钟/2 - RCC_SYSCLK_Div4 AHB时钟 = 系统时钟/4 - RCC_SYSCLK_Div8 AHB时钟 = 系统时钟/8 - RCC_SYSCLK_Div16 AHB时钟 = 系统时钟/16 - RCC_SYSCLK_Div64 AHB时钟 = 系统时钟/64 - RCC_SYSCLK_Div128 AHB时钟 = 系统时钟/128 - RCC_SYSCLK_Div256 AHB时钟 = 系统时钟/256 - RC
10、C_SYSCLK_Div512 AHB时钟 = 系统时钟/512 void RCC_PCLK1Config(u32 RCC_PCLK1)参数参数:RCC_PCLK1 APB1分频系数 - RCC_HCLK_Div1 APB2时钟 = HCLK - RCC_HCLK_Div2 APB2时钟 = HCLK/2 - RCC_HCLK_Div4 APB2时钟 = HCLK/4 - RCC_HCLK_Div8 APB2时钟 = HCLK/8 - RCC_HCLK_Div16 APB2时钟 = HCLK/16 void RCC_PCLK2Config(u32 RCC_PCLK2)参数参数:RCC_PCLK
11、2 APB2分频系数 - RCC_HCLK_Div1 APB2时钟 = HCLK - RCC_HCLK_Div2 APB2时钟 = HCLK/2 - RCC_HCLK_Div4 APB2时钟 = HCLK/4 - RCC_HCLK_Div8 APB2时钟 = HCLK/8 - RCC_HCLK_Div16 APB2时钟 = HCLK/16 u8 RCC_GetSYSCLKSource(void) 返回值返回值:用作系统时钟的时钟源: - 0 x00:HSI 作为系统时钟 - 0 x04:HSE 作为系统时钟 - 0 x08:PLL 作为系统时钟 Page 6Page 7RCC寄存器结构寄存器结
12、构stm32f10 x.htypedef struct vu32 CR; vu32 CFGR; vu32 CIR; vu32 APB2RSTR; vu32 APB1RSTR; vu32 AHBENR; vu32 APB2ENR; vu32 APB1ENR; vu32 BDCR; vu32 CSR; ;/时钟控制寄存器 /时钟配置寄存器 /时钟中断寄存器 /APB2外设复位寄存器 /APB1外设复位寄存器 /AHB外设时钟使能寄存器 /APB2外设时钟使能寄存器 /APB1外设时钟使能寄存器 /备份域控制寄存器 /控制/状态寄存器 Page 8stm32f10 x_rcc.h解析解析_4653P
13、age 9stm32f10 x_rcc.h解析解析_6771用于参数正确性验证,参考assert_param函数Page 10stm32f10 x_rcc.h解析解析_8193Page 11stm32f10 x_rcc.h解析解析_102140Page 12stm32f10 x_rcc.h解析解析_148282Page 13stm32f10 x_rcc.h解析解析_289294Page 14stm32f10 x_rcc.h解析解析_303316Page 15stm32f10 x_rcc.h解析解析_325333Page 16stm32f10 x_rcc.h解析解析_341363Page 17s
14、tm32f10 x_rcc.h解析解析_370434Page 18stm32f10 x_rcc.h解析解析_443447Page 19stm32f10 x_rcc.h解析解析_456461Page 20stm32f10 x_rcc.h解析解析_470488Page 21stm32f10 x_rcc.h解析解析_497519数值设定参考寄存器数值设定参考寄存器RCC_APB2ENR位结构位结构Page 22stm32f10 x_rcc.h解析解析_528554数值设定参考寄存器数值设定参考寄存器RCC_APB1ENR位结构位结构Page 23stm32f10 x_rcc.h解析解析_564585
15、这里的数值为什么定义成8位,而不是32位格式,如定义RCC_MCO_SYSCLK为(uint32_t)0 x04000000)Page 24stm32f10 x_rcc.h解析解析_595626Page 25stm32f10 x_rcc.h解析解析_647708Page 26RCC库函数库函数函数名 描述 将外设RCC寄存器重设为缺省值 设置外部高速晶振(HSE ) 等待HSE起振 RCC_AdjustHSICalibrationValue 调整内部高速晶振(HSI)校准值 使能或者失能内部高速晶振(HSI) 设置PLL 时钟源及倍频系数 使能或者失能PLL 设置系统时钟(SYSCLK ) 返
16、回用作系统时钟的时钟源 设置AHB时钟(HCLK) 设置低速APB时钟(PCLK1) 设置高速APB时钟(PCLK2) RCC_ITConfig 使能或者失能指定的RCC 中断 RCC_USBCLKConfig 设置USB 时钟(USBCLK ) RCC_ADCCLKConfig 设置ADC时钟(ADCCLK) RCC_LSEConfig 设置外部低速晶振(LSE ) Page 27RCC库函数库函数函数名 描述 RCC_LSICmd 使能或者失能内部低速晶振(LSI) RCC_RTCCLKConfig 设置RTC 时钟(RTCCLK ) RCC_RTCCLKCmd 使能或者失能RTC 时钟
17、返回不同片上时钟的频率 使能或者失能AHB外设时钟 使能或者失能APB2外设时钟 使能或者失能APB1外设时钟 RCC_APB2PeriphResetCmd 强制或者释放高速APB (APB2)外设复位 RCC_APB1PeriphResetCmd 强制或者释放低速APB (APB1)外设复位 RCC_BackupResetCmd 强制或者释放后备域复位 RCC_ClockSecuritySystemCmd 使能或者失能时钟安全系统 RCC_MCOConfig 选择在MCO管脚上输出的时钟源 检查指定的RCC标志位设置与否 RCC_ClearFlag 清除RCC的复位标志位 RCC_GetIT
18、Status 检查指定的RCC中断发生与否 RCC_ClearITPendingBit 清除RCC的中断待处理位 Page 28RCC库函数库函数函数名 RCC_DeInit 函数原形 void RCC_DeInit(void) 功能描述 将外设RCC寄存器重设为缺省值 输入参数 无 输出参数 无 返回值 无 先决条件 无 被调用函数 无 Page 29RCC库函数库函数函数名 RCC_HSEConfig函数原形 void RCC_HSEConfig(u32 RCC_HSE)功能描述 设置外部高速晶振(HSE )输入参数 RCC_HSE: HSE 的新状态 - RCC_HSE_OFF HSE晶
19、振OFF - RCC_HSE_ON HSE晶振ON - RCC_HSE_Bypass HSE晶振被外部时钟旁路输出参数 无返回值 无先决条件 如果HSE被直接或者通过PLL用于系统时钟,那么它不能被停振被调用函数 无例:启动HSE时钟RCC_HSEConfig(RCC_HSE_ON); Page 30RCC库函数库函数函数名 RCC_WaitForHSEStartUp函数原形 ErrorStatus RCC_WaitForHSEStartUp(void) 功能描述 等待HSE 起振 该函数将等待直到HSE 就绪,或者在超时超时的情况下退出 输入参数 无 输出参数 无 返回值 ErrorStat
20、us 枚举值: - SUCCESS: HSE 晶振稳定且就绪 - ERROR: HSE 晶振未就绪 先决条件 无被调用函数 无stm32f10 x.hPage 31程序举例程序举例ErrorStatus HSEStartUpStatus; RCC_HSEConfig(RCC_HSE_ON); HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus = SUCCESS) /* . */ else /* . */ Page 32RCC库函数库函数函数名 RCC_HSICmd函数原形 void RCC_HSICmd(Functi
21、onalState NewState)功能描述 使能或者失能内部高速晶振(HSI) 输入参数 NewState :HSI 新状态 这个参数可以取:ENABLE 或者DISABLE 输出参数 无 返回值 无先决条件 如果HSI被直接或者通过PLL用于系统时钟,或者FLASH编写操作进行中,那么它不能被停振被调用函数 无stm32f10 x.hPage 33RCC库函数库函数函数名 RCC_PLLConfig 函数原形 void RCC_PLLConfig(u32 RCC_PLLSource, u32 RCC_PLLMul) 功能描述 设置PLL 时钟源及倍频系数 输入参数 RCC_PLLSour
22、ce:PLL 的输入时钟源 - RCC_PLLSource_HSI_Div2 PLL 的输入时钟 = HSI 时钟频率除以2 - RCC_PLLSource_HSE_Div1 PLL 的输入时钟 = HSE时钟频率 - RCC_PLLSource_HSE_Div2 PLL 的输入时钟 = HSE 时钟频率除以2 RCC_PLLMul : PLL 倍频系数 - RCC_PLLMul_2 PLL 输入时钟x2 - . - RCC_PLLMul_16 PLL 输入时钟x16输出参数 无 返回值 无 先决条件 无被调用函数 无Page 34RCC库函数库函数函数名 RCC_PLLCmd函数原形 voi
23、d RCC_PLLCmd(FunctionalState NewState)功能描述 使能或者失能PLL 输入参数 NewState :PLL 新状态 这个参数可以取:ENABLE 或者DISABLE输出参数 无 返回值 无 先决条件 如果PLL 被用于系统时钟,那么它不能被失能被调用函数 无Page 35RCC库函数库函数函数名 RCC_SYSCLKConfig函数原形 void RCC_SYSCLKConfig(u32 RCC_SYSCLKSource)功能描述 设置系统时钟(SYSCLK )输入参数 RCC_SYSCLKSource: 用作系统时钟的时钟源 - RCC_SYSCLKSou
24、rce_HSI 选择HSI作为系统时钟 - RCC_SYSCLKSource_HSE 选择HSE作为系统时钟 - RCC_SYSCLKSource_PLLCLK 选择PLL作为系统时钟 输出参数 无 返回值 无 先决条件 无被调用函数 无Page 36RCC库函数库函数函数名 RCC_GetSYSCLKSource函数原形 u8 RCC_GetSYSCLKSource(void)功能描述 返回用作系统时钟的时钟源输入参数 无 输出参数 无 返回值 用作系统时钟的时钟源: - 0 x00:HSI 作为系统时钟 - 0 x04:HSE 作为系统时钟 - 0 x08:PLL 作为系统时钟 先决条件
25、无被调用函数 无例: if(RCC_GetSYSCLKSource() != 0 x04) else Page 37RCC库函数库函数函数名 RCC_HCLKConfig函数原形 void RCC_HCLKConfig(u32 RCC_HCLK)功能描述 设置AHB时钟(HCLK)输入参数 RCC_HCLK: 定义HCLK,该时钟源自系统时钟(SYSCLK ) - RCC_SYSCLK_Div1 AHB时钟 = 系统时钟 - RCC_SYSCLK_Div2 AHB时钟 = 系统时钟/2 - RCC_SYSCLK_Div4 AHB时钟 = 系统时钟/4 - RCC_SYSCLK_Div8 AHB
26、时钟 = 系统时钟/8 - RCC_SYSCLK_Div16 AHB时钟 = 系统时钟/16 - RCC_SYSCLK_Div64 AHB时钟 = 系统时钟/64 - RCC_SYSCLK_Div128 AHB时钟 = 系统时钟/128 - RCC_SYSCLK_Div256 AHB时钟 = 系统时钟/256 - RCC_SYSCLK_Div512 AHB时钟 = 系统时钟/512 输出参数 无 返回值 无 先决条件 无被调用函数 无Page 38RCC库函数库函数函数名 RCC_PCLK1Config函数原形 void RCC_PCLK1Config(u32 RCC_PCLK1)功能描述 设
27、置低速APB时钟(PCLK1)输入参数 RCC_PCLK1: 定义PCLK1,该时钟源自AHB时钟(HCLK) - RCC_HCLK_Div1 APB1时钟 = HCLK - RCC_HCLK_Div2 APB1时钟 = HCLK/2 - RCC_HCLK_Div4 APB1时钟 = HCLK/4 - RCC_HCLK_Div8 APB1时钟 = HCLK/8 - RCC_HCLK_Div16 APB1时钟 = HCLK/16 输出参数 无 返回值 无 先决条件 无被调用函数 无Page 39RCC库函数库函数函数名 RCC_PCLK2Config函数原形 void RCC_PCLK2Conf
28、ig(u32 RCC_PCLK2)功能描述 设置高速APB时钟(PCLK2)输入参数 RCC_PCLK2: 定义PCLK2,该时钟源自AHB时钟(HCLK) - RCC_HCLK_Div1 APB2时钟 = HCLK - RCC_HCLK_Div2 APB2时钟 = HCLK/2 - RCC_HCLK_Div4 APB2时钟 = HCLK/4 - RCC_HCLK_Div8 APB2时钟 = HCLK/8 - RCC_HCLK_Div16 APB2时钟 = HCLK/16 输出参数 无 返回值 无 先决条件 无被调用函数 无Page 40RCC库函数库函数函数名 RCC_GetClocksFr
29、eq函数原形 void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks) 功能描述 返回不同片上时钟的频率输入参数 RCC_Clocks:指向结构 RCC_ClocksTypeDef 的指针,包含了各个时钟的频率 输出参数 无 返回值 无 先决条件 无被调用函数 无例: /* 获取片上各时钟频率 */ RCC_ClocksTypeDef RCC_Clocks; RCC_GetClocksFreq(&RCC_Clocks); Page 41RCC库函数库函数函数名 RCC_AHBPeriphClockCmd函数原形 void RCC_AHBPeri
30、phClockCmd(u32 RCC_AHBPeriph, FunctionalState NewState) 功能描述 使能或者失能AHB外设时钟 输入参数 RCC_AHBPeriph: 门控AHB外设时钟 - RCC_AHBPeriph_DMA DMA时钟 - RCC_AHBPeriph_SRAM SRAM 时钟 - RCC_AHBPeriph_FLITF FLITF 时钟 NewState :指定外设时钟的新状态 - ENABLE / DISABLE输出参数 无 返回值 无 先决条件 无被调用函数 无例:RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA,EN
31、ABLE)Page 42RCC库函数库函数函数名 RCC_APB2PeriphClockCmd 函数原形 void RCC_APB2PeriphClockCmd(u32 RCC_APB2Periph, FunctionalState NewState)功能描述 使能或者失能APB2外设时钟输入参数 RCC_APB2Periph: 门控APB2外设时钟 - RCC_APB2Periph_AFIO 功能复用IO时钟 - RCC_APB2Periph_GPIOA GPIOA时钟 - RCC_APB2Periph_GPIOB GPIOB 时钟 - RCC_APB2Periph_GPIOC GPIOC
32、时钟 - RCC_APB2Periph_GPIOD GPIOD时钟 - RCC_APB2Periph_GPIOE GPIOE 时钟 - RCC_APB2Periph_ADC1 ADC1 时钟 - RCC_APB2Periph_ADC2 ADC2 时钟 - RCC_APB2Periph_TIM1 TIM1时钟 - RCC_APB2Periph_SPI1 SPI1 时钟 - RCC_APB2Periph_USART1 USART1 时钟 - RCC_APB2Periph_ALL 全部APB2外设时钟NewState :指定外设时钟的新状态 - ENABLE / DISABLE输出参数 无 返回值
33、无 Page 43RCC库函数库函数函数名 RCC_APB1PeriphClockCmd 函数原形 void RCC_APB1PeriphClockCmd(u32 RCC_APB1Periph, FunctionalState NewState)功能描述 使能或者失能APB2外设时钟输入参数 RCC_APB1Periph: 门控APB2外设时钟 - RCC_APB1Periph_TIM2 TIM2时钟 - RCC_APB1Periph_TIM3 TIM3时钟 - RCC_APB1Periph_TIM4 TIM4时钟 - RCC_APB1Periph_WWDG WWDG时钟 - RCC_APB1Periph_SPI2 SPI2 时钟 - RCC_APB1Periph_USART2 USART2 时钟 - RCC_APB1Periph_USART3 USART3 时钟 - RCC_APB1Periph_I2C1 I2C1时钟 - RCC_APB1Periph_I2C2 I2C2时钟 - RCC_APB1Periph_USB USB 时钟 - RCC_APB1Periph_CAN CAN时钟 - RCC_APB1Periph_BKP BKP 时钟 - RCC_APB1Periph_PWR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 质控指标解读与应用课件
- 农业物联网:现代农业的智慧革命
- 2026年数据知识产权许可交易质押融资证券化转化总金额超10亿
- 2026年Lowe玻璃 镀膜玻璃 智能玻璃光谱选择性反射机理与选型指南
- 2026年CubeAI算网模一体化技术体系异构算力纳管模型服务化
- 2026年碳足迹管理软件平台功能对比与选型指南
- 2026年地震坍塌废墟机器人搜救操作实务
- 2026年节卡焊接机器人在韩国大型造船厂狭窄船体内部结构件焊接中应用
- 2026年星载铷原子钟批量生产线建设与准时交付率100%经验复盘
- 2026年好氧厌氧耦合深度发酵饲料生产技术规范
- 2025年国家公务员考试行测逻辑判断100题及答案
- 危险废物及一般固体废物收集暂存转运项目环评资料环境影响
- 《温度传感器选型》课件
- 《国际商事争端解决法》课程教学大纲
- 糖尿病酮症酸中毒纠正后-静脉胰岛素输注向皮下注射的转换技巧
- 青少年体质健康促进的家校协同机制研究
- GB/T 14233.3-2024医用输液、输血、注射器具检验方法第3部分:微生物学试验方法
- 2023年北京语言大学新编长聘人员招聘笔试真题
- GB/T 18724-2024印刷技术印刷品与印刷油墨耐各种试剂性的测定
- 抗感染药物课件
- 解读2024年《学纪、知纪、明纪、守纪》全文课件
评论
0/150
提交评论