X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
微控制器 MCU
[经验] MSP430F5438学习笔记 TA1溢出中断加比较匹配中断
qinkaiabc
2014-1-14 14:11
楼主
// 时钟默认情况
// 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 <msp430.h>
#include <stdio.h>
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;
}
}
MSP430F5438学习笔记 TA1溢出中断加比较匹配中断 - 徐凯经验分享
http://t.cn/8FLMlta
点赞
回复评论
暂无评论,赶紧抢沙发吧
最新活动
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
TI 有奖直播 | 使用基于 Arm 的 AM6xA 处理器设计智能化楼宇
Follow me第二季第3期来啦!与得捷一起解锁高性能开发板【EK-RA6M5】超能力!
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
随便看看
紧急求助:功率放大器自激问题!
WINCE5.0 建立拨号连接(急)
自己设计的stm32f429核心板和液晶屏,和大家分享一下
msp430 MSP-FET430UIF firmware update 问题
【Atmel SAM R21创意大赛周计划】+ZLLDEMO 场景遥控视频效果
STM32F429 discovery某些引脚不能正常输出高低电平
驱动问题?
计时程序非常怪异高手来指点一下
VB不会用,要编串口发送程序,求救...
不知道有没有用dsPIC33f的兄弟?
【TI首届低功耗设计大赛】示波器获得突破性进展
家乡的变化让我欣喜
网络最佳兼职
【模电选课测试】+TI 高精度实验室 – ADC 的频域指标
诡异现象之TIM2——大侠救命
新年祝福语 欢乐大竞猜--东北方言
linux网络编程书籍指南
MSP430F1232中断学习
寻找和STM8L051F3P6类似的 5伏单片机
MSP430G2的温度报警如何实现
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复