历史上的今天
今天是:2024年10月11日(星期五)
2019年10月11日 | STM32F103 时钟配置
2019-10-11 来源:eefocus

STM32F103外部8M的振荡器,经过倍频后最高可以达到72M。
void RCC_DeInit(void) 将外设RCC寄存器重设为缺省值
void RCC_HSEConfig(u32 RCC_HSE) 设置外部高速晶振(HSE)
RCC_HSE 取值如下:
RCC_HSE_OFF HSE晶振OFF
RCC_HSE_ON HSE晶振ON
RCC_HSE_Bypass HSE晶振被外部时钟旁路
ErrorStatus RCC_WaitForHSEStartUp(void) 等待HSE起振
该函数将等待直到HSE就绪,或者在超时的情况下退出
返回值
一个ErrorStatus枚举值:
SUCCESS:HSE晶振稳定且就绪
ERROR:HSE晶振未就绪
void RCC_HCLKConfig(u32 RCC_HCLK) 设置AHB时钟(HCLK)
AHB(HCLK)时钟源自系统时钟(SYSCLK)
RCC_HCLK 取值如下:
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
RCC_SYSCLK_Div512 AHB时钟 = 系统时钟 / 512
void RCC_PCLK2Config(u32 RCC_PCLK2) 设置高速AHB时钟(PCLK2)
PCLK2时钟源自AHB时钟(HCLK)
RCC_PCLK2输入参数:
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_PCLK1Config(u32 RCC_PCLK1) 设置低速AHB时钟(PCLK1)
RCC_PCLK1输入参数
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
void RCC_PLLConfig(u32 RCC_PLLSource, u32 RCC_PLLMul) 设置PLL时钟源及倍频系数
RCC_PLLSource输入参数
RCC_PLLSource_HSI_Div2 PLL的输入时钟 = HSI时钟频率除以2
RCC_PLLSource_HSE_Div1 PLL的输入时钟 = HSE时钟频率
RCC_PLLSource_HSE_Div2 PLL的输入时钟 = HSE 时钟频率除以2
RCC_PLLMul输入参数
RCC_PLLMul_2 PLL输入时钟 x 2
RCC_PLLMul_3 PLL输入时钟 x 3
RCC_PLLMul_4 PLL输入时钟 x 4
RCC_PLLMul_5 PLL输入时钟 x 5
RCC_PLLMul_6 PLL输入时钟 x 6
RCC_PLLMul_7 PLL输入时钟 x 7
RCC_PLLMul_8 PLL输入时钟 x 8
RCC_PLLMul_9 PLL输入时钟 x 9
RCC_PLLMul_10 PLL输入时钟 x 10
RCC_PLLMul_11 PLL输入时钟 x 11
RCC_PLLMul_12 PLL输入时钟 x 12
RCC_PLLMul_13 PLL输入时钟 x 13
RCC_PLLMul_14 PLL输入时钟 x 14
RCC_PLLMul_15 PLL输入时钟 x 15
RCC_PLLMul_16 PLL输入时钟 x 16
void RCC_PLLCmd(FunctionalState NewState) 使能或者失能PLL
NewState输入参数
ENABLE 或者 DISABLE
FlagStatus RCC_GetFlagStatus(u8 RCC_FLAG) 检查指定的RCC标志位设置与否
RCC_FLAG输入参数
RCC_FLAG_HSIRDY HSI晶振就绪
RCC_FLAG_HSERDY HSE晶振就绪
RCC_FLAG_PLLRDY PLL就绪
RCC_FLAG_LSERDY LSI晶振就绪
RCC_FLAG_LSIRDY LSE晶振就绪
RCC_FLAG_PINRST 管脚复位
RCC_FLAG_PORRST POR/PDR复位
RCC_FLAG_SFTRST 软件复位
RCC_FLAG_IWDGRST IWDG复位
RCC_FLAG_WWDGRST WWDG复位
RCC_FLAG_LPWRRST 低功耗复位
返回值
SET RESET
void RCC_SYSCLKConfig(u32 RCC_SYSCLKSource) 设置系统时钟(SYSCLK)
RCC_SYSCLKSource输入参数
RCC_SYSCLKSource_HSI 选择HSI作为系统时钟
RCC_SYSCLKSource_HSE 选择HSE作为系统时钟
RCC_SYSCLKSource_PLLCLK 选择PLL作为系统时钟
u8 RCC_GetSYSCLKSource(void) 返回用作系统时钟的时钟源
返回值
0x00:HSI作为系统时钟
0x04:HSE作为系统时钟
0x08:PLL作为系统时钟
例程 HSE作为PLL,PLL作为SYSCLK
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON);
if (RCC_WaitForHSEStartUp() == SUCCESS) {
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK2Config(RCC_HCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div2);
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
RCC_PLLCmd(ENABLE);
while( RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET ) {
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while( RCC_GetSYSCLKSource() != 0x08 );
}
}
史海拾趣
|
本信息来自合作QQ群:电子工程师技术交流(12425841) 群主在坛子ID:Kata 麻烦推荐个运放,能测出1mV左右电压,失真比较小 用OP07可以不? … 查看全部问答> |
|
用keil编码1114的i2c,我在设置了编译优化选项之后出现了巨大的问题。索性,在取消掉所有的优化选项后i2c通信已经正常。 可惜结果仍然不正确,我就跟代码。这时候才发现一个无法理解的问题。我在funcA()里调用funcB()时传入一个静态myVar ...… 查看全部问答> |
|
如题,公司用的是ANTDATA公司出的DTGS-800模块,虽然也带有文档说明,但我觉得不够详细,所以特来发帖提问,希望大家踊跃发言,问题如下: 1、读取短信的时候,怎样才能不改变短信的状态呢?例如,执行了以下AT命令 AT+UGSM=1 返回OK(DTGS-800支 ...… 查看全部问答> |
|
求助:PWM输出8.2KHZ1:1的方波,为什么在4.3K有个的很强频率分量 设置如下: unsigned short pwmizhouqi=256; LPC_TMR16B1->TCR = 0; LPC_SYSCON->SYSAHBCLKCTRL |= (1PIO1_9 = 0X01; LPC_TMR16B1->MR0 = pwmizhouqi/2; LPC ...… 查看全部问答> |
|
原帖不能编辑了,就新开一帖在这里,望斑竹谅解 目前为止,基于launchpad和nrf24l01的单向收发已经实现,程序在下面放出,还有很多要改进的,仅供参考。欢迎高手拍砖。 学习经历: 1.收到板子后查了下资料,发现很丰富啊,于是 ...… 查看全部问答> |
|
我用的是MPLAB ICE和PICC编译PIC16F722,之前编译什么的都没问题,重装系统后再安装后就再也编译不成功了,提示No installed compiler driver supports device 16F722。 编译PIC16F505没有问题。每次点Project-Select Language Toolsuite后HI-TECH ...… 查看全部问答> |




