msp430学习笔记-时钟及延时函数
引用:http://blog.chinaunix.net/uid-24343357-id-3271380.html
MCLK默认时钟源是DCOCLK,SMCLK默认时钟源也是DCOCLK,DCOCLK默认约为1.1MHZ(1126.4KHz),ACLK默认为32768HZ
系统复位后MCLK和SMCLK的频率在0.8MHz~1.5MHz,即819.2KHz~1536KHz。系统启动后,可以调整RSELx(基本时钟系统控制寄存器1BCSCTL1前3位)、DCOx(DCO控制器DCOCTL前5位)、MODx(DCO控制器DCOCTL后3位)的值得到合适的频率
MSP430基础时钟模块包含以下3个时钟输入源。
一、4个时钟振荡源
1、LFXT1CLK: 外部晶振或时钟1 低频时钟源 低频模式:32768Hz 高频模式:(400KHz-16MHz)
2、XT2CLK: 外部晶振或时钟2 高频时钟源(400KHz-16MHz)
3、DCOCLK: 内部数字RC振荡器,复位值1.1MHz
4、VLOCLK: 内部低功耗振荡器 12KHz
注:MSP430x20xx: LFXT1 不支持 HF 模式, XT2 不支持, ROSC 不支持.
(1)LFXT1CLK 低频时钟源:由LFXT1振荡器产生(如图2所示)。通过软件将状态寄存器中OSCOff复位后,LFXT1开始工作,即系统采用低频工作。如果LFXT1CLK没有用作SMCLK或MCLK信号,则可以用软件将OSCOff置位,禁止LFXT1工作。
(2)XT2CLK高频时钟源:由XT2振荡器产生。它产生时钟信号XT2CLK,其工作特性与LFXT1振荡器工作在高频模式时类似。可简单地通过软件设置XT2振荡器是否工作,当XT2CLK没有用作SMCLK或MCLK信号时,关闭XT2,选择其他时钟源。
(3)DCOCLK 数字控制RC振荡器。由集成在时钟模块中的DCO振荡器产生。DCO振荡器是一个RC振荡器,频率可以通过软件调节,其控制逻辑如图3所示。当振荡器LFXT1、XT2被禁止或失效时,DCO振荡器被自动选作MCLK的时钟源。因此由振荡器失效引起的系统中断请求可以得到响应,甚至在CPU关闭的情况下也能得到处理。
由基础时钟模块可以提供系统所需的3种时钟信号,即:ACLK、MCLK、SMCLK。其中辅助时钟ACLK是LFXT1CLK信号经1、2、4、8分频后得到的。ACLK可由软件选作各个外围模块的时钟信号,一般用于低速外设;系统主时钟MCLK可由软件选择来自LFXT1CLK、XT2CLK、DCOCLK三者之一,然后经1、2、4、8分频得到。MCLK主要用于CPU和系统。子系统时钟SMCLK可由软件选择来自LFXT1CLK和DCOCLK,或者XT2CLK和DCOCLK,然后经1、2、4、8分频得到,主要用于高速外设模块。







延时函数
#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
在 #define CPU_F ((double)8000000) 语句里 8000000 修改成你当前MSP430 CPU的主频频率,即CPU的MCLK
直接调用,如:__delay_cycles(100),就延时100个时钟周期
只能是常数,因为编译器会重新编译为汇编代码
msp430学习笔记-时钟及延时函数的更多相关文章
- Hadoop源码学习笔记(2) ——进入main函数打印包信息
Hadoop源码学习笔记(2) ——进入main函数打印包信息 找到了main函数,也建立了快速启动的方法,然后我们就进去看一看. 进入NameNode和DataNode的主函数后,发现形式差不多: ...
- JavaScript学习笔记(七)——函数的定义与调用
在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...
- Python学习笔记014——迭代工具函数 内置函数enumerate()
1 描述 enumerate() 函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中. 2 语法 enumerate(sequ ...
- C语言学习笔记---好用的函数memcpy与memset
这个主要用于我个人的学习笔记,便于以后查询,顺便分享给大家. 想必在用C的时候难免会与数组,指针,内存这几样东西打交道,先以数组为例,例如有一个数组int a[5] = {1, 2, 3, 4, 5} ...
- C++学习笔记之——内联函数,引用
本文为原创作品,转载请注明出处 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/ 作者:晨凫 ...
- 大一C语言学习笔记(5)---函数篇-定义函数需要了解注意的地方;定义函数的易错点;详细说明函数的每个组合部分的功能及注意事项
博主学习C语言是通过B站上的<郝斌C语言自学教程>,对于C语言初学者来说,我认为郝斌真的是在全网C语言学习课程中讲的最全面,到位的一个,这个不是真不是博主我吹他哈,大家可以去B站去看看,C ...
- 学习笔记之——C语言 函数
采用函数的原因: 随着程序规模的变大,产生了以下问题: --main函数变得相当冗杂 --程序复杂度不断提高 --代码前后关联度提高,修改代码往往牵一发而动全身 --变量使用过多,命名都成了问题 -- ...
- msp430学习笔记-msp430g2553
C语言例程:http://wenku.baidu.com/link?url=49JzNSvt3m0fRuf8SWTEM8yEw1yzqr4lBR-QbX8FddcmjTVYnDhuR97wB60HNf ...
- es6学习笔记--字符串&数值&数组&函数&对象的扩展
这几天抽空学习了es6语法,关于字符串,数值,数组,函数以及对象的扩展,看到es6标准入门这本书,里面讲的扩展特别多,我认为有几部分在项目上用不到,就挑有用的当笔记学习了. 字符串的扩展 str.in ...
随机推荐
- Jpa实体类生成图解
Jpa实体类生成图解 创建连接 创建项目
- 推荐十款java开源中文分词组件
1:Elasticsearch的开源中文分词器 IK Analysis(Star:2471) IK中文分词器在Elasticsearch上的使用.原生IK中文分词是从文件系统中读取词典,es-ik本身 ...
- linux驱动程序:控制发光二极管
一个完整的Linux驱动包括内部处理和交互两部分.其中内部处理主要是指Linux驱动的装载.卸载.与设备文件的相关动作处理以及业务逻辑等.与硬件交互主要是指通过iowrite32.ioread32 ...
- DevExpress v18.1新版亮点——WinForms篇(八)
用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WinForms v18.1 的新功能,快来下载试用新版本! ...
- MyEclipse移动开发教程:设置所需配置的iOS应用(三)
MyEclipse个人授权 折扣低至冰点!立即开抢>> [MyEclipse最新版下载] 三.创建配置文件 Provisioning profiles授权文件应用程序在iOS设备上安装并运 ...
- 给迷茫的你学习Node.js最好的方法
这是真事儿,在3w咖啡整理书稿,然后小弟梁过来了,聊聊他的现状,一副很不好的样子,在天津我曾带过他大半年,总不能不管,我给他的建议是:“每天看10个npm模块” 对于学习Node.js迷茫的人来说,这 ...
- vue-compile概述
来源 刘涛 Vue的核心可以分为三个大块:数据处理和双向绑定.模板编译.虚拟dom. 前面我们对第一部分的主要内容双向绑定做了一个分析讲解,接下来我们说一说模板编译. 这一部分的内容比较多,也比较复杂 ...
- Redis学习第八课:Redis高级实用特性(二)
Redis高级实用特性 4.持久化机制 Redis是一个支持持久化的内存数据库,也就是说Redis需要经常将内存中的数据同步到硬盘来保证持久化.Redis支持两种持久化方式:(1).snapshott ...
- uDig配图与GeoServer添加Style
软件介绍: uDig是一个开源的桌面GIS软件,可以进行shp与栅格数据地图文件的编辑和查看,对OpenGIS标准,关于互联网GIS.网络地图服务器和网络功能服务器有特别的加强.通常和GeoServe ...
- 【c++基础】vector中按照Point类型某一个变量进行排序
code // sort(a.begin(), a.end(), cmpy); //subfunction bool cmpy(cv::Point const& a, cv::Point co ...