当前位置:首页 > 单片机 > 单片机
[导读]// 时钟默认情况 // FLL时钟 FLL选择 XT1 // 辅助时钟 ACLK选择 XT1 32768Hz // 主系统时钟 MCLK选择 DCOCLKDIV 8000000Hz // 子系统时钟 SMCLK选择 DCOCLKDIV 8000000Hz // TA1选择ACLK,最大计数值为6

// 时钟默认情况

// 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;

}

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

为增进大家对工业以太网的认识,本文将对工业以太网的原理、工业以太网的关键技术以及工业以太网要解决的问题予以介绍。

关键字: 以太网 工业以太网 指数

为增进大家对工业以太网的认识,本文将对工业以太网网络优势、工业以太网和IOLINK的区别予以介绍。

关键字: 以太网 工业以太网 指数

为增进大家对工业以太网的认识,本文将对工业以太网的优势、工业以太网缺点、工业以太网的维护予以介绍。

关键字:

Apr. 23, 2024 ---- 随着节能成为AI推理服务器(AI Inference Server)优先考量,北美客户扩大存储产品订单,带动QLC Enterprise SSD需求开始攀升。然而,目前仅Solidi...

关键字: SSD AI 服务器

为增进大家对二极管的认识,本文将对续流二极管、续流二极管的工作原理以及二极管在工业产品中的应用予以介绍。

关键字: 二极管 指数 续流二极管

通过本文,您将了解到二极管反接是否有电压以及二极管在电子电路中的应用。

关键字: 二极管 指数 稳压电路

为增进大家对二极管的了解,本文将对ESD二极管和TVS二极管之间的区别予以介绍。

关键字: ESD TVS 二极管 指数

为增进大家对嵌入式主板的认识,本文将对嵌入式主板以及嵌入式主板常见问题及其解决方法予以介绍。

关键字: 嵌入式 指数 主板

为增进大家对嵌入式系统的认识,本文将对嵌入式系统、嵌入式系统的特点予以介绍。

关键字: 嵌入式 指数 嵌入式系统

为增进大家对嵌入式的认识,本文将对嵌入式、嵌入式工作相关的内容予以介绍。

关键字: 嵌入式 指数 嵌入式技术
关闭
关闭