一、时钟【MSP430学习笔记】
2022-09-27 来源:csdn
1、复位系统
1.1 上电复位
*复位后单片机的初始状态:*
RST引脚被设置为复位模式
所有的I/O口引脚被设置为输入
外围模块被初始化
状态寄存器SR复位
看门狗激活,进入工作模式
程序计数器PC装入0XFFFEH处的地址,从此地址开始执行程序
1.2 上电清除
*产生情况:*
POR产生时
启动看门狗时,看门狗定时器计满
看门狗写入错误安全参数值
片内Flash写入错误的安全参数
2、时钟系统
2.1时钟知识图谱
2.2时钟系统结构原理图
2.3 时钟信号描述
通过这些基本的时钟模块,我们可以得到 3 个有用的时钟信号:
[1] ACLK 辅助时钟(Auxillary Clock)
ACLK 是 LFXT1CLK 时钟源经 1、2、4、8 分频后得到的。
ACLK 可由软件选择作为各个外围模块的时钟信号,一般用于低速外设。
[2] MCLK 主系统时钟(Main System Clock)
MCLK 可由软件选择来自 LFXT1CLK、XT2CLK、DCOCLK 三者之一,然后经 1、2、4、8 分频。
MCLK 通常用于 CPU 运行,程序的执行和其他使用到高速时钟的模块。
[3] SMCLK 子系统时钟(Sub System Clock)
SMCLK 可由软件选择来自 XT2CLK 或 DCOCLK,然后经 1、2 、4、8 分频。
SMCLK 通常用于高速外围模块。
寄存器
2.4 例程
时钟配置例程:
// 设 ACLK=MCLK=LFXT1=HF,将 MCLK 通过 P5.4 输出
#include void main(void) { unsigned int i; WDCTL = WDTPW + WDTHOLD; // 停看门狗 P5DIR |= 0x10; // P5.4 输出 P5SEL |= 0x10; // P5.4 = MCLK BCSCTL1 |= XTS; // ACLK = LFXT1 = HF 模式 do { IFG1 &= ~OFIFG; // 清除振荡器失效标志 for(i = 0Xff;i > 0;i--); // 稳定时间 } while((IFG1 & OFIFG) != 0); // 如果振荡器失效标志存在 BCSCTL2 |= SELM1 + SELM0; // MCLK = LFXT1 While(1){_NOP();} } // 时钟设置函数 // 系统时钟设定 // DCO 设置为 3030KHz // ACLK 为 LFXT1(低频模式) // MCLK 为 XT2CLK // SMLCK 为 XT2CLK void BCSInit (void) { DCOCTL = 0x60 + 0x00; BCSCTL1 = DIVA_0 + 0x07; BCSCTL2 = SELM_2 + DIVM_0 + SELS + DIVS_0; }
上一篇:MSP430知识图谱