历史上的今天
今天是:2025年02月24日(星期一)
2020年02月24日 | STM32F1一种相对简单的使用HSI配置系统时钟为64MHz的方法
2020-02-24 来源:eefocus
最近因为项目成本需要,必须使用片内晶振作为系统的时钟源,所以对正点原子的项目模板时钟配置做了一些修改。使时钟倍频至64MHz供系统使用。
有需要的同学可以参考一下,代码如下:
#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
/* #define SYSCLK_FREQ_HSE HSE_VALUE */
#define SYSCLK_FREQ_24MHz 24000000
#else
/* #define SYSCLK_FREQ_HSE HSE_VALUE */
/* #define SYSCLK_FREQ_24MHz 24000000 */
/* #define SYSCLK_FREQ_36MHz 36000000 */
/* #define SYSCLK_FREQ_48MHz 48000000 */
/* #define SYSCLK_FREQ_56MHz 56000000 */
/* #define SYSCLK_FREQ_72MHz 72000000 */
#endif
这里先将宏定义注释掉;
#ifdef SYSCLK_FREQ_HSE
uint32_t SystemCoreClock = SYSCLK_FREQ_HSE; /*!< System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_24MHz
uint32_t SystemCoreClock = SYSCLK_FREQ_24MHz; /*!< System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_36MHz
uint32_t SystemCoreClock = SYSCLK_FREQ_36MHz; /*!< System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_48MHz
uint32_t SystemCoreClock = SYSCLK_FREQ_48MHz; /*!< System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_56MHz
uint32_t SystemCoreClock = SYSCLK_FREQ_56MHz; /*!< System Clock Frequency (Core Clock) */
#elif defined SYSCLK_FREQ_72MHz
uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz; /*!< System Clock Frequency (Core Clock) */
#else /*!< HSI Selected as System Clock source */
//uint32_t SystemCoreClock = HSI_VALUE; /*!< System Clock Frequency (Core Clock) */
uint32_t SystemCoreClock = 64000000;
#endif
接着将SystemCoreClock替换为64MHz;
/*使用内部RC振荡器,设置系统时钟为64MHz*/
static void Intn_RC_Init(void)
{
RCC_DeInit();
RCC_HSICmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)== RESET);
RCC_HCLKConfig(RCC_SYSCLK_Div1); //设置AHB时钟(HCLK) = 系统时钟
RCC_PCLK2Config(RCC_HCLK_Div1); //设置AHB2时钟 = HCLK
RCC_PCLK1Config(RCC_HCLK_Div1); //设置AHB1时钟 = HCLK
FLASH_SetLatency(FLASH_Latency_2); //设置FLASH存储器延时时钟周期数
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_16); //设置PLL时钟源及倍频系数,频率为8/2*16=64MHz
RCC_PLLCmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
while(RCC_GetSYSCLKSource() != 0x08);
}
这样就完成了系统时钟的配置!
上一篇:stm32 固件库系统时钟配置
下一篇:stm32_HSI
史海拾趣
|
;P ;P !从本网站挪过来的资料! 为了响应小杰关于FPGA入门资料编写号召,特此发此贴,提供下载。 书还没看,感觉还不错,要求FPGA有点入门的。 关于学习FPGA,首先是自己有开发板,然后,就是自己给自己立一个项目练习。这样自己会编写代码。 ...… 查看全部问答> |
|
AD采集的数据在12232上显示 ,看看我的源程序#include<reg52.h>#include<intrins.h>#include<stdio.h>#define uchar unsigned char#define uint unsigned intsbit led1=P2^3; //led端口定义sbit led2=P2^4;sbit led3=P2^5;s ...… 查看全部问答> |
|
在eboot中也不能使用物理地址直接访问内存。而使用的是虚拟地址。 我的6410版,RAM从128M升级到256M之后,系统一直没有搞定,在eboot中测试内存发现, 我映射了一段并不存在的内存到0x96000000,在eboot中写了一个循环读写,如下: for (i = 0; ...… 查看全部问答> |
|
现在公司准备做Win下的PCI设备的驱动, 以前从未接触过这样的项目, 老大让我先收集资料, 请问我该补哪方面的钙? 就是那种很普通的数据采集卡,AD转换卡 硬件平台:普通PC. 软件平台:win xp,2k ps: 我只做过dos+工控机平台的板卡程序,,就是那种 ...… 查看全部问答> |
|
注册表项[HKEY_LOCAL_MACHINE\SOFTWARE\Apps]下有许多子项,如何将它们一一读出? 在WinCE上, 注册表项 [HKEY_LOCAL_MACHINE\\SOFTWARE\\Apps]下有许多子项, 如何将它们一一读出?… 查看全部问答> |
|
我第一次接触串口开发,很多不明白的地方。 现在手头有一设备,类似读卡器,是USB口的,装完驱动后会生成一对应的COM口。 刷卡的时候,这个外界设备会向连着的主机程序发送一串ASCII字符,我该如何获得这些数据呢? 我用超级终端链接这个COM口, ...… 查看全部问答> |
|
LCD 驱动程序上有一个DUMMY (RGB_DUMMY) 的东西,它起什么作用呀? LCD 驱动程序上有一个DUMMY (RGB_DUMMY) 的东西,它起什么作用呀? 三星6410(或BSP上)有这个东西吗? 如何设置它?… 查看全部问答> |




