疯狂的大柚柚带你玩转MSP-ESP430G2(基础篇)-----(七)系统时钟的介绍
疯狂的大柚柚带你玩转MSP-ESP430G2(基础篇)
(七)系统时钟的介绍
MSP430G2553 系列单片机的时钟系统,包括2-4个时钟源,可以为外设和CPU提供3个系统时钟。
注意:LFX1不支持HF模式,无XT2,不支持ROSC
系统时钟
ACLK:辅助时钟
ACLK可以被软件配置从LFXT1CLK或VLOCLK输入震荡ACLK可以被1,2,4,8分频,以及可以被选用作为外围模块的时钟输入。MCLK:主时钟
主时钟可以从LFXT1CLK或VLOCLK,XT2CLK或DCOCLK输入MCLK用在CPU系统中。SMCLK:辅助主时钟
SMCLK可以被选择从LFXT1CLK,VLOCLK,XT2CLK或DCOCLK输入。SMCLK可以被1,2,4,8分频。SMCLK可以被选用为外围模块的时钟。
系统时钟控制寄存器
MSP430共提供了三种时钟信号,ACLK,MCLK,SMCLK.
ACLK主要使用在一些速度不高的外设,以实现低功耗。
SMCLK可从DCO或外部引入主要满足高速外设的使用。
MCLK主要向CPU提供时钟。
注意:一般情况下MCLK频率最高,ACLK频率最低
众所周知,任何外设均需要时钟且寄存器是由D触发器构成的,但前仍需要有时钟输入。
由于430拥有低功耗模式因此当需要运行一个时钟的时候,其余时钟自动设置为Disable,所以在耗能部分就会大幅度减少。
注意:在具体应用过程中需要先配置时钟再配置GPIO。
这样做是因为寄存器是由D触发器构成的,当开启时钟后触发器值才能被改写。
在430中用户可以更好的选择功耗,它对每个外置的时钟都设置了开关,使用者可以精确的控制,并且关闭所不用的设备,因此达到节能。
例1:
CPU is disabled
ACLK and SMCLK remain active,
MCLK is disabled
Low-power mode 1(LPM1)
根据MSP430G2553手册可知
控制寄存器:DCOCTL,BCSCTL1,BCSCTL2,BCSCTL3
Register | Short Form | Register Type | Address | Initial State |
---|---|---|---|---|
DCO control registe | DCOCTL | Rend/write | 056h | 060h with PUC |
Baisic clock system control 1 | BCSCTL1 | Read/write | 057h | 087h with POR |
Basic clock systom control 2 | BCSCTL2 | Read/write | 058h | Roset with PUC |
Basic clock systom control 3 | BCSCTL3 | Read/write | 053h | 005h with PUC |
SER interrupt enable registor 1 | IET | Read/write | 000h | Reset with PUC |
SFR interrupt flng register 1 | IFG1 | Read/write | 002h | Reset with PUC |
DCOCTL
调制器将fDCO和fDCO+1进行混频,产生一个在fDCO和fDCO+1之间的频率。调制器在32个DCOCLK周期内,对FDCO和fDCO+1进行混频,当MODx=0时 调制器关闭。
- DCOx:DCO频率选择 这些位可以由RSELx决定的八个离散的DCO频率中选择。
- MODx:调制系数 这个系数决定在32个周期中的fDCO+1占多少,fDCO占多少。
BCSCTL1
- XT20FF:0 XT2 开启
1 XT2如果不被用作MCLK和SMCLK则关闭 - XTS: 0 低频模式
1高频模式 - DIVAx: ACLK分频控制
00/1
01/2
10/4
11/8 RSE - Lx: DCO频率范围选择,RSELx=0时频率最低,当DCOR=1时RSEL3被忽略
BCSCTL2
SELMx:MCLK频率选择
00 DCOCLK
01 DCOCLK
10 XT2如果出现在片上则是XT2CLK,当XT2不出现在片上则选择LFXT1CLK或者VLOCLK
11 LFXT1CLK或VLOCLKDIVM: MCLK分频
00/1
01/2
10/4
11/8SELS: SMCLK频率选择
0 DCOCLK
1 片上若有XT2则选择XT2CLK,若没有XT2则选择VLOCLK或XT2DIVSx:SMCLK的分频
00/1
01/2
10/4
11/8DCOR:DCO震荡电阻选择
0 内部电阻
1外部电阻
BCSCTL3
XT2Sx:XT2范围选择
00 0.4~1MHz 晶振或振荡器
01 1~3MHz晶振或振荡器
10 3~16MHz晶振或振荡器
11 外部0.4~16MHz振荡器XCAPx:内部电容选择
00~1pF
01~6pF
10~10pF
11~12.5pFXT2OF:XT2错误标识位
0 无错误
1 有错误LFXT1OF:LFXT1错误
0 无错误
1 有错误LFXT1SX: 低频时钟选择和LFXT1范围选择。
当XTS=0时这些位在LFXT1和VLO之选择
当XTS=1时选择LFXT1的频率范围XTS=0时
00 LFXT1的32768Hz晶振
01 保留
10VLOCLK(仅在MSP430F21x1中有)
11外部数字时钟源XTS=1时
00 0.4MHz~1MHz晶振或振荡器
01 1MHz~3MHz晶或振荡器
10 3~16MHz晶振或振荡器
11 0.4~16MHz振荡器
例2:
#include
"msp430g2553.h"
void main(void)
{WDTCTL = WDTPW + WDTHOLD;P1DIR |= BIT0 + BIT6;while(1){P1OUT ^= BIT0 + BIT6;__delay_cycles(100000);}
}
这段程序采用430上电后默认的DCO频率,假设是1MHz的话,则延时100000个DCO提供的MCLK大概是0.1s左右。
下面一段程序,将DCOx设置为1,RSELx设置为1,通过数据手册查得DCO频率大概在0.06~0.14MHz之间,所以明显MCLK要慢得多了,因此LED闪烁时间延长。
#include
"msp430g2553.h"
void main(void)
{WDTCTL = WDTPW + WDTHOLD;DCOCTL |= DCO0;DCOCTL &=~(DCO1 + DCO2);BCSCTL1 |= RSEL0;BCSCTL1 &=~ (RSEL1 + RSEL2 + RSEL3);P1DIR |= BIT0 + BIT6;while(1){P1OUT ^= BIT0 + BIT6;__delay_cycles(100000);}
}
例2出自:https://blog.csdn.net/hongkangwl/article/details/16971399
疯狂的大柚柚带你玩转MSP-ESP430G2(基础篇)-----(七)系统时钟的介绍相关推荐
- java玩转区块链-基础篇-账户
java玩转区块链-基础篇--账户 java环境配置 基础概念 账户 maven包引用 创建账户代码 代码解释 (1) (2) (3) (4) 可以不让搞,但是不允许你不会 java环境配置 jdk版 ...
- java玩转区块链-基础篇-solidity语法-基础类型
java玩转区块链-基础篇-solidity语法-基础类型 java环境配置 代码准备 maven 完整solidity 执行步骤 基础类型 布尔类型 类型标识: 字面常量值: 运算符: 短路规则: ...
- 独立艺术家大谷spizher带你玩转PaddleGAN
一个曾被 "卷积网络之父"Yann LeCun(杨立昆)誉为「过去十年计算机科学领域最有趣的想法之一」,是近年来火遍全网,AI 研究者最为关注的深度学习算法方向之一,GAN--生成 ...
- 江涛带你玩0.96-OLED之实战stm32的RTC时钟(上)
目录 1.前言 2.准备工作 3.关于OLED驱动,模拟SPI和硬件SPI 4.关于SPI和IIC的驱动的异同点 5.开始驱动OLED,使用STM32-CubeMX生成代码 6.显示函数 7.改造显示 ...
- 一篇文章带你玩转C语言基础语法5:条件判断 if else 语句与分支 。(千字总结)
我的个人主页:☆光之梦☆的博客_CSDN博客-C语言基础语法(超详细)领域博主 欢迎各位
- 一篇文章带你玩转C语言基础语法。2:数据类型。千字总结
我的个人主页:☆光之梦☆的博客_CSDN博客-C语言基础语法(超详细)领域博主 欢迎各位
- 玩转RAW格——基础篇
一.什么是RAW文件? RAW文件主要是一种记录了数码相机传感器的原始信息,同时伴随着一些由相机所产生的一些元数据(metadata,诸如IS0的设置.快门速度.光圈值.白平衡等)的文件.不同的相机制 ...
- 【博学谷学习记录】超强总结,用心分享丨大数据超神之路(五):Hadooop基础篇
文章目录 前言 1.编译源码 1.1 官网下载编译后的包 1.2 手动编译 1.2.1 安装编译相关的依赖 1.2.2 手动安装cmake3.13.5 1.2.3 手动安装snappy1.1.3 1. ...
- C#插件开发之带控件的插件开发(基础篇)
1.实现功能介绍 插件中存在控件,运行程序时将控件添加到主程序的容器panel中,可执行插件中设定的控件功能. 2.文件架构 3.创建插件接口 namespace PluginFramework {p ...
最新文章
- C语言面试题-这些简单的你能很快的写出来吗?
- WinDBG工具简介(.net大会中张银奎先生介绍)
- 【MM模块】ASAP 项目实施方法简介
- Vue注意事项及用得较多的属性归纳
- 第九节:深究并行编程Parallel类中的三大方法 (For、ForEach、Invoke)和几大编程模型(SPM、APM、EAP、TAP)
- Go语言操作MySQL的基础知识
- linux 生成随机数 命令,Linux生成随机数的多种方法
- Arp Scan和局域网隐身
- 开放下载!2021 解锁 Serverless 从入门到实战大“橙”就
- android jni示例_Android动画示例
- c++进阶(十八)stack容器和queue容器
- E-day0003:generate
- IP Multicast: MSDP RPF检测详细规则(转)
- 比google earth还好的实景地图
- 动态正则化权重系数_PARALLEL LADDER ALGORITHMS BASED ON A PRIORI ERRORS OF PREDICTION AND SIMULATION...
- Excel怎么转换成PDF?这两种转换方法看到就是赚到
- Batch Normalization :深度网络中的BN层
- 长治南垂驾校科目二经验总结
- Latex自定义文档纸张大小
- 人人都来写算法 之 插入排序
热门文章
- 一个让人类窒息的AI工具,或许未来人工智能真的能代替人类!
- linux CentOS
- 大厂挑完、中厂捡漏、小厂最现实,想拿高薪offer,刚毕业的我这样曲线救国
- 计算机cad模板大小,CAD如何设置尺寸标注样式
- 配置 Java 开发环境
- 南昌大学matlab实验2,南昌大学MATLAB与控制系统仿真实验报告-资源下载人人文库网...
- 如何判断对方列表里是不是好友_对方QQ是否把我删了不确定是否还在他的好友列表里...
- UltraISOPE 9.6.2.3059简体中文注册版/单文件版+软碟通
- 增长黑客系列—如何精细化渠道效果投放
- Linux杀不死木马,杀不死进程,自启动进程