// 时钟默认情况
// FLL时钟 FLL选择 XT1
// 辅助时钟 ACLK选择 XT1 32768Hz
// 主系统时钟 MCLK选择 DCOCLKDIV 8000000Hz
// 子系统时钟 SMCLK选择 DCOCLKDIV 8000000Hz
// TA1选择ACLK,最大计数值为65535
// 比较匹配值为 32768
// 在TIMER1_A0_VECTOR中 CCR0中断 P4.0 = 0
// 在TIMER1_A1_VECTOR中 OVF中断 P4.0 = 1
// 实际效果 P4.0 1s为高电平,1s为低电平,交替进行
#include
#include
void clock_config(void);
void select_xt1(void);
void dco_config(void);
int main(void)
{
clock_config(); // 初始化时钟
P4DIR |= BIT0; // P4.0输出
TA1CCTL0 = CCIE; // 使能TA1CCR0,比较匹配中断
TA1CCR0 = 16384; // 初始化比较匹配值
TA1CTL = TASSEL_1 + MC_2 + TACLR + TAIE; // 选择ACLK,最大值为65535,清除计数值
_EINT(); // 初始化全局中断
while(1)
{
;
}
}
void clock_config(void)
{
WDTCTL = WDTPW + WDTHOLD; // 停止看门狗
select_xt1(); // 选择XT1
dco_config(); // ACLK = XT1 = 32.768K
// MCLK = SMCLK = 8000K
}
void select_xt1(void)
{
// 启动XT1
P7SEL |= 0x03; // P7.0 P7.1 外设功能
UCSCTL6 &= ~(XT1OFF); // XT1打开
UCSCTL6 |= XCAP_3; // 内部电容
do
{
UCSCTL7 &= ~XT1LFOFFG; // 清楚XT1错误标记
}while (UCSCTL7&XT1LFOFFG); // 检测XT1错误标记
}
void dco_config(void)
{
__bis_SR_register(SCG0); // 禁止FLL功能
UCSCTL0 = 0x0000; // Set lowest possible DCOx, MODx
UCSCTL1 = DCORSEL_5; // DCO最大频率为16MHz
UCSCTL2 = FLLD_1 + 243; // 设置DCO频率为8MHz
// MCLK = SMCLK= Fdcoclkdiv = (N+1)X(Ffllrefclk/n)
// N为唯一需要计算的值
// Ffllrefclk FLL参考时钟,默认为XT1
// n取默认值,此时为1
// (243 + 1) * 32768 = 8MHz
__bic_SR_register(SCG0); // 使能FLL功能
// 必要延时
__delay_cycles(250000);
// 清楚错误标志位
do
{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
// 清除所有振荡器错误标志位
SFRIFG1 &= ~OFIFG; // 清除振荡器错误
}while (SFRIFG1&OFIFG); // 等待清楚完成
}
#pragma vector=TIMER1_A0_VECTOR
__interrupt void TIMER1_A0_ISR(void)
{
P4OUT &= ~BIT0;
}
#pragma vector=TIMER1_A1_VECTOR
__interrupt void TIMER1_A1_ISR(void)
{
switch(__even_in_range(TA1IV,14))
{
case 0: break; // No interrupt
case 2: break; // CCR1中断
case 4: break; // CCR2中断
case 6: break; // reserved
case 8: break; // reserved
case 10: break; // reserved
case 12: break; // reserved
case 14: // 溢出中断
P4OUT |= BIT0;
break;
default: break;
}
}
上一篇:S1按键中断控制LED灯
下一篇:msp430F5438A 的中断初步
设计资源 培训 开发板 精华推荐
- AM1G-4803DZ ±3.3V 1 瓦 DC-DC 转换器的典型应用
- 【立创开发板】想做掌机
- 用于视频/成像的 ±5V 模拟放大
- T12焊台
- CY3250-24X94,用于调试 QFN CY8C24x94 PSoC 器件的在线仿真 (ICE) Pod 套件
- ADZS-CM403F-EZBRD、基于混合信号控制处理器 (DSP) 的 ADSP-CM40x EZ-Board 评估系统
- NUCLEO-L152RE,STM32 Nucleo 开发板,带有 STM32L152RET6 MCU,支持 Arduino 和 ST morpho 连接
- 使用 Richtek Technology Corporation 的 RT8286 的参考设计
- AD9235BCP-65EBZ,用于评估 AD9235BCP-65 单通道 ADC 流水线 65Msps 12 位并行 32 引脚 LFCSP 的评估套件
- OP462HRUZ-REEL耳机输出运算放大器典型应用电路