基于STM32单片机建立系统时钟的设计方案

这里必须阐明系统时钟的简历对于系统运行的重要性。系统所有的运行都是建立在时钟的正常运行上的,没有稳健的系统时钟,就不可能有稳定的系统。
在系统中,复位后首要的任务是建立系统时钟,以下是建立系统时钟的基本步骤:
1. 将所有的rcc外设寄存器重设为默认值;
2.启用外部高速晶振;
3.等待,知道外部高速晶振稳定;
4.设置欲取指缓存使能和代码延时值;
5.设置ahb(hclk)等于系统时钟;
6.设置高速apb2(pclk2)为系统时钟;
7.设置低速apb1(pclk1)为系统时钟的1/2,apb2最高是38mhz;
8.设置pll时钟源及倍频系数,使能pll,经过pll被频后最高时钟只能72mhz;
9.等待pll初始化;
10.设置pll为系统时钟;
11.等待pll成功作为系统时钟源。
以下通过实例代码表征上述的使用方法。主要就是根据以上的系统时钟配置的顺序来做代码处理:
errorstatus hsestatusupstatus;
//将外设rcc寄存器重设为默认值
rcc_deinit();
//设置外部高速晶振
rcc_hseconfig(rcc_hse_on);
//等待hse起振
hsestatusupstatus = rcc_waitforhsestatusup();
if(hsestatusupstatus == sucess)
{
//预取指缓存使能
flash_prefetchbuffercmd(flash_pertchbuffer_enable);
//设置代码延时值,flash_latency_2,2 延时周期
flash_setlatency(flash_latency_2);
//设置ahb时钟(hclk)
//rcc_sysclk_div1 ahb 时钟 = 系统时钟
rcc_hclkconfig(rcc_sysclk_div1);
//设置高速ahb2为系统时钟
rcc_pclk2config(rcc_hclk_div1);
//设置低速ahb时钟
rcc_pclk2config(rcc_hclk_div2);
//设置pll时钟
rcc_pllconfig(rcc_pllsource_hse_div1,rcc_pllmul_9);
//使能pll
rcc_pllcmd(enable);
// 等待指定rcc标志位设置成功,等待pll初始化成功
while(rcc_getflagstatus(rcc_flag_pllrdy) == reset)
{
}
//设置pll为系统时钟
rcc_sysclkconfig(rcc_sysclksource_pllclk)
//0x00 hsi,0x04 hse,0x08 pll
while(rcc_getsysclksource() != 0x08)
{
}
}
来源;21ic

黑芝麻智能深耕车规级大算力自动驾驶计算芯片领域
联想Z5评测 :“跑分为王”到“体验第一”
一款防水电机电路图
LWDM产业得到有力支撑,中国电信实现AWG在无源波分中的应用
低压伺服电动机选交流的还是直流的?
基于STM32单片机建立系统时钟的设计方案
硅频率控制器的性能特点与参数精度
三星发布了全球首款支持Wi-Fi 6E标准的手机Galaxy S21 Ultra
博通为都市热点提供3G和LTE多模小型基站单芯片系统解决方案
城市排水管网流量在线监测系统
Q1季度家电出口规模同比下降12.6%,线上销售渠道持续发力
小米选择初音未来作为代言红米Note4X的背后,小米的无奈和妥协
中电器材(CEAC)成为Intersil在中国的授权分销商
全球汽车电动化的趋势不可阻挡,且发展方向已经清晰明朗
浅谈MOS管的二阶效应
技术驱动向新,并联机器人进化之路
用于开发声学拓扑晶体管的设计原则
如何利用Lab Windows/CVI实现PC与DSP的串行通信功能
高德红外黄立:锻造红外科技领军人才团队,研发人员达1800余人
淘汰还是新生?关于机器人换人的思考