云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > STM32F10x - RCC - 图文

STM32F10x - RCC - 图文

  • 62 次阅读
  • 3 次下载
  • 2026/1/12 0:39:09

tmpreg = RCC->CFGR;

/* Clear SW[1:0] bits */ tmpreg &= CFGR_SW_Mask;

/* Set SW[1:0] bits according to RCC_SYSCLKSource value */ tmpreg |= RCC_SYSCLKSource;

/* Store the new value */ RCC->CFGR = tmpreg; }

15.2.9 函数RCC_GetSYSCLKSource

Table 350. 函数RCC_GetSYSCLKSource 函数名 RCC_GetSYSCLKSource 函数原形 u8 RCC_GetSYSCLKSource(void) 功能描述 返回用作系统时钟的时钟源 输入参数 无 输出参数 无 用作系统时钟的时钟源: 返回值 先决条件 被调用函数 例: /* Test if HSE is used as system clock */ if(RCC_GetSYSCLKSource() != 0x04) { } else { }

函数原型如下:

u8 RCC_GetSYSCLKSource(void) {

return ((u8)(RCC->CFGR & CFGR_SWS_Mask));//u8?byte访问; // #define CFGR_SWS_Mask ((u32)0x0000000C)//Bit3-2 //若设置了PLL,系统时间还要考虑倍频问题。 }

0x00:HSI作为系统时钟 0x04:HSE作为系统时钟 0x08:PLL作为系统时钟 无 无 15.2.10 函数RCC_HCLKConfig

Table 351. 函数RCC_HCLKConfig 函数名 RCC_HCLKConfig 函数原形 void RCC_HCLKConfig(u32 RCC_HCLK) 设置AHB时钟(HCLK) 功能描述 输入参数RCC_HCLK:定义HCLK,该时钟源自系统时钟(SYSCLK) 参阅Section:RCC_HCLK查阅更多该参数允许取值范围 输出参数 无 返回值 无 先决条件 无 被调用函数 无 RCC_HCLK :该参数设置了AHB时钟,Table 352. 给出了该参数可取的值。 Table 352. RCC_HCLK值 RCC_HCLK 描述/RCC_CFGR.HPRE[7:4] #defined值 RCC_SYSCLK_Div1 RCC_SYSCLK_Div2 RCC_SYSCLK_Div4 RCC_SYSCLK_Div8 AHB时钟 = 系统时钟 AHB时钟 = 系统时钟 / 2 AHB时钟 = 系统时钟 / 4 AHB时钟 = 系统时钟 / 8 0x00000000 0x00000080 0x00000090 0x000000A0 RCC_SYSCLK_Div16 RCC_SYSCLK_Div64 RCC_SYSCLK_Div128 RCC_SYSCLK_Div256 RCC_SYSCLK_Div512 例: AHB时钟 = 系统时钟 / 16 AHB时钟 = 系统时钟 / 64 AHB时钟 = 系统时钟 / 128 AHB时钟 = 系统时钟 / 256 AHB时钟 = 系统时钟 / 512 0x000000B0 0x000000C0 0x000000D0 0x000000E0 0x000000F0 /* Configure HCLK such as HCLK = SYSCLK */ RCC_HCLKConfig(RCC_SYSCLK_Div1); 函数原型如下:

void RCC_HCLKConfig(u32 RCC_SYSCLK) {

u32 tmpreg = 0;

/* Check the parameters */

assert_param(IS_RCC_HCLK(RCC_SYSCLK));

tmpreg = RCC->CFGR;

/* Clear HPRE[3:0] bits */

tmpreg &= CFGR_HPRE_Reset_Mask;

/* Set HPRE[3:0] bits according to RCC_SYSCLK value */ tmpreg |= RCC_SYSCLK;

/* Store the new value */ RCC->CFGR = tmpreg; }

//使用AHB时钟的模块有7个:DMA1/2、SRAM、FLITF(Flash InTerFace)、CRC、FSMC、SDIO。

15.2.11 函数RCC_PCLK1Config

Table 353. 函数RCC_PCLK1Config 函数名 RCC_PCLK1Config 函数原形 void RCC_PCLK1Config(u32 RCC_PCLK1) 设置低速AHB时钟(PCLK1-即APB1) 功能描述 备注:APB1、APB2均由AHB分频获得 RCC_PCLK1:定义PCLK1,该时钟源自AHB时钟(HCLK) 输入参数 参阅Section:RCC_PCLK1查阅更多该参数允许取值范围 输出参数 无 返回值 无 先决条件 无 被调用函数 无 RCC_PCLK1:该参数设置了低速AHB时钟(PCLK1即APB1),Table 354. 给出了该参数可取的值。 Table 354. RCC_PCLK1 值 RCC_PCLK1 描述/CFGR.PPRE1[2:0] #defined值(Bit10-8) RCC_HCLK_Div1 APB1时钟 = HCLK 0x0000 0000 RCC_HCLK_Div2 APB1时钟 = HCLK / 2 0x0000 0400 RCC_HCLK_Div4 APB1时钟 = HCLK / 4 0x0000 0500 RCC_HCLK_Div8 APB1时钟 = HCLK / 8 0x0000 0600 RCC_HCLK_Div16 APB1时钟 = HCLK / 16 0x0000 0700 例: /* Configure PCLK1 such as PCLK1 = HCLK/2 */ RCC_PCLK1Config(RCC_HCLK_Div2); 函数原型如下:

void RCC_PCLK1Config(u32 RCC_HCLK) {

u32 tmpreg = 0;

/* Check the parameters */

assert_param(IS_RCC_PCLK(RCC_HCLK));

tmpreg = RCC->CFGR;

/* Clear PPRE1[2:0] bits */

tmpreg &= CFGR_PPRE1_Reset_Mask;// #define CFGR_PPRE1_Reset_Mask ((u32)0xFFFFF8FF)

/* Set PPRE1[2:0] bits according to RCC_HCLK value */ tmpreg |= RCC_HCLK;

/* Store the new value */ RCC->CFGR = tmpreg; }

15.2.12 函数RCC_PCLK2Config

Table 355. 函数RCC_PCLK2Config 函数名 RCC_PCLK2Config 函数原形 void RCC_PCLK2Config(u32 RCC_PCLK2) 设置高速AHB时钟(PCLK2-即APB2) 功能描述 备注:APB1、APB2均由AHB分频获得 RCC_PCLK2:定义PCLK2,该时钟源自AHB时钟(HCLK) 输入参数 参阅Section:RCC_PCLK2查阅更多该参数允许取值范围 输出参数 无 返回值 无 先决条件 无 被调用函数 无 RCC_PCLK2 :该参数设置了高速AHB时钟(PCLK2),Table 356. 给出了该参数可取的值。 Table 356. RCC_PCLK2值【与RCC_PCLK1相同】 RCC_PCLK2 描述CFGR.PPRE2[2:0] #defined值(Bit10-8) RCC_HCLK_Div1 APB2时钟 = HCLK 0x0000 0000 RCC_HCLK_Div2 APB2时钟 = HCLK / 2 0x0000 0400 RCC_HCLK_Div4 APB2时钟 = HCLK / 4 0x0000 0500 RCC_HCLK_Div8 APB2时钟 = HCLK / 8 0x0000 0600 RCC_HCLK_Div16 APB2时钟 = HCLK / 16 0x0000 0700 例: /* Configure PCLK2 such as PCLK2 = HCLK */ RCC_PCLK2Config(RCC_HCLK_Div1); 函数原型如下:

void RCC_PCLK2Config(u32 RCC_HCLK) {

u32 tmpreg = 0;

/* Check the parameters */

assert_param(IS_RCC_PCLK(RCC_HCLK));

tmpreg = RCC->CFGR;

/* Clear PPRE2[2:0] bits */

tmpreg &= CFGR_PPRE2_Reset_Mask;//#define CFGR_PPRE2_Reset_Mask ((u32)0xFFFFC7FF)

/* Set PPRE2[2:0] bits according to RCC_HCLK value */

tmpreg |= RCC_HCLK << 3;//RCC_HCLK2取值与RCC_HCLK1相同;但PPRE2[2:0]比PPRE1[2:0]高3位。

/* Store the new value */ RCC->CFGR = tmpreg; }

15.2.13 函数RCC_ITConfig

Table 357. 函数RCC_ITConfig 函数名 RCC_ITConfig void RCC_ITConfig(u8 RCC_IT, FunctionalState 函数原形 NewState) 功能描述 使能或失能 指定的RCC 中断 RCC_IT:待使能或者失能的 RCC中断源 输入参数 1 参阅Section:RCC_IT查阅更多该参数允许取值范围 NewState:RCC中断的新状态 输入参数 2 参数取值:ENABLE或者DISABLE 输出参数 无 返回值 无 先决条件 无 被调用函数 无 RCC_IT:输入参数RCC_IT使能或者失能RCC的中断。可以取下表的一个或者多个取值的组合作为该参数的值。 Table 358. RCC_IT值 RCC_IT 描述/RCC_CIR.Bit[4:0] #defined值 对应CIR位置 RCC_IT_LSIRDY LSI就绪中断 0x01 bit0 RCC_IT_LSERDY LSE就绪中断 0x02 bit1 RCC_IT_HSIRDY HSI就绪中断 0x04 bit2 RCC_IT_HSERDY HSE就绪中断 0x08 bit3 RCC_IT_PLLRDY PLL就绪中断 0x10 bit4 例: /* Enable PLL Ready interrupt */

RCC_ITConfig(RCC_IT_PLLRDY, ENABLE); 函数原型如下:

void RCC_ITConfig(u8 RCC_IT, FunctionalState NewState) {

/* Check the parameters */

assert_param(IS_RCC_IT(RCC_IT));

assert_param(IS_FUNCTIONAL_STATE(NewState));

if (NewState != DISABLE) {

/* Perform Byte access to RCC_CIR[12:8] bits to enable the selected interrupts */ *(vu8 *) CIR_BYTE2_ADDRESS |= RCC_IT; } else {

/* Perform Byte access to RCC_CIR[12:8] bits to disable the selected interrupts */ *(vu8 *) CIR_BYTE2_ADDRESS &= (u8)~RCC_IT; }

// #define CIR_BYTE2_ADDRESS ((u32)0x40021009) //指向RCC_CIR[12:8],使能中断 //另: #define CIR_BYTE3_ADDRESS ((u32)0x4002100A) //指向RCC_CIR[20:16],清除中断 }

15.2.14 函数RCC_USBCLKConfig

Table 359. 函数RCC_USBCLKConfig 函数名 RCC_USBCLKConfig 函数原形 void RCC_USBCLKConfig(u32 RCC_USBCLKSource) 功能描述 设置USB时钟(USBCLK) RCC_USBCLKSource:定义USBCLK,该时钟源自 PLL输出 输入参数 参阅Section:RCC_USBCLKSource查阅更多该参数允许取值范围 输出参数 无 返回值 无 先决条件 无 被调用函数 无 RCC_USBCLKSource:该参数设置了USB时钟(USBCLK),Table 360. 给出了该参数可取的值。 Table 360. RCC_USBCLKSource值 参数RCC_USBCLKSource取值 描述CFGR. USBPRE(Bit22) #define值 RCC_USBCLKSource_PLLCLK_1Div5 USB时钟 = PLL时钟/1.5 0x00 RCC_USBCLKSource_PLLCLK_Div1 USB时钟 = PLL时钟 0x01 例: /* PLL clock divided by 1.5 used as USB clock source */ RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_1Div5); 函数原型如下:

void RCC_USBCLKConfig(u32 RCC_USBCLKSource) {

/* Check the parameters */

assert_param(IS_RCC_USBCLK_SOURCE(RCC_USBCLKSource));

*(vu32 *) CFGR_USBPRE_BB = RCC_USBCLKSource;// bit22地址 &CFGR_USBPRE_BB = 0x4267 2058 /*位操作麻烦(地址配置容易出错),可对整个CFGR进行:

if(RCC_USBCLKSource_PLLCLK_Div1==Ox01)RCC->CFGR|=(u32)1<<22;

搜索更多关于: STM32F10x - RCC - 图文 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

tmpreg = RCC->CFGR; /* Clear SW[1:0] bits */ tmpreg &= CFGR_SW_Mask; /* Set SW[1:0] bits according to RCC_SYSCLKSource value */ tmpreg |= RCC_SYSCLKSource; /* Store the new value */ RCC->CFGR = tmpreg; } 15.2.9 函数RCC_GetSYSCLKSource Table 350. 函数RCC_GetSYSCLKSource 函数名 RCC_GetSYSCLKSource 函数原形 u8 RCC_GetSYSCLKSource(void) 功能描述 返

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com