×

白话理解RCC时钟树(可下载)

消耗积分:0 | 格式:pdf | 大小:637.93 KB | 2025-03-27

张飞实战电子官方

  • 175内容
  • 9.3w阅读
  • 1.7k粉丝

时钟就像是单片机的“心脏”,单片机正常工作离不开时钟的支持,下图是我们单片机的时

钟树 ,它反映了单片机的时钟关系。我们来详细描述一下时钟树的工作原理。

寄存器上电后有一个复位值,大家看我画红线的这个,这个是单片机上电默认使用时钟 的配置线路

默认使用的是内部默认的 8M RC 振荡器,有两条路可以选,我们先看上面红 色的第一条

到多路选择器 SW 的时候,我们可以通过配置寄存器中的 SW 位来决定 HSI/PLLCLK/HSE 

哪一个输入信号从多路选择器通过,在默认的状态下 SW 选择的是 HSI8M 从 多路选择器通过

通过了 SW 这个选择开关后,第一个是 SYSCLK 一路朝上可以供 I2C1 选择时钟

另外一 个就是继续向后,通过 AHB 这个方框,在这里我们可以配置寄存器选择这个 8M 是否分频

默认是不分频 也就是经过这个方框后出来往后的还是 8M,如果这里配置为 2 分频

方框出 来后就是 4M 了,经过 AHB 分频出来后还是 8M 

这个 8M 提供给了很多路大家可以从上面 的图中看出来,那么继续向后是 APB 分频

这里分了两个箭头指向,一个是朝上的给 AHB 总线 、内核、Memory 、DMA、内核定 时器和 FCLK

从这里我们可以看到 内核是 8M 时钟(这个频率决定了单片机指令的执行时间,频率越 小,指令执行速度越慢)

一路是向后给了 APB 分频器,这里可以配置你想要的分频系数

如果 这里还是不分频出来的 PCLK 还依然是 8M,那么 PCLK 又给了 APB 外设 ,还给了定时器、串 口等外设

通过这个关系,我们可以清楚的知道,每个外设的工作频率,那可能就会有人问了

这 有什么用呢?每个外设都需要时钟来提供振荡源来帮助完成工作,举个例子讲

比如说串口 配置一个波特率,那么波特率(通信速率,表示每秒钟传送的数据的位数,即 bit/s)是如何来配置呢

 就是根据这个时钟频率来配置的,知道了时钟频率,厂家有一个计算公式

就能很容易的算 出某一个波特率对应的寄存器值是多少

默认的我们知道了,M0 支持最大 48M,内部 RC 振荡器只有 8M,这个咋整呢?不要慌, 我们继续往下看

既然 HSI 直接给 SW 多路选择器,不能到 48M,那我不直接给通过 SW 了行不行,请看图中 箭头处

HSI 绕一下从 PLLSRC 多路选择器通过,那么 PLLSRC 多路选择器也有两个选择可以 通过寄存器配置

假设配置寄存器选择 HSI 作为输入,多路选择器输出后经过 PREDIV 分频 器

假设 PREDIV 我们配置不分频,这个分频器出来输入到 PLL 模块的时候还是 8M

完整版技术文档请点击文章开头普通下载

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'白话理解RCC时钟树(可下载)',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);