历史上的今天
今天是:2025年01月13日(星期一)
2020年01月13日 | MSP430-定时器的寄存器介绍以及测试应用
2020-01-13 来源:eefocus
本文介绍的是MSP430内部的定时器1














测试代码如下:
#include "io430.h"
#include "in430.h"
//demo,led闪烁
void Init_TimeA(void);
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
Init_TimeA();
P2DIR = 0XFF;
P2OUT = 0XFF;
return 0;
}
void Init_TimeA(void)
{
TACTL = TASSEL_1 + ID_3 + MC_1;//定时器的时钟源选择ACLK,增计数模式 32.768k
CCTL0 = CCIE;//使能CCR0中断
CCR0 = 4096;//设定周期为1s
_EINT();//使能总中断
}
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
P2OUT =~P2OUT;
}
#include "io430.h"
#include "in430.h"
void Init_TimeA(void);
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
Init_TimeA();
P2DIR =0XFF;
P2OUT =0XFF;
return 0;
}
void Init_TimeA(void)
{
TACTL = TASSEL_2 + ID_3 + MC_1;//定时器的时钟源选择ACLK,增计数模式 800khz
CCTL0 = CCIE;//使能CCR0中断
CCR0 = 50000;//设定周期为0.5s
_EINT();//使能总中断
}
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
P2OUT =~P2OUT;
}
如果要精准定时则要使用外部晶振进行定时计数:
#include #include "clock.h" /**************************************************************************** 初始化时钟 ******************************************************************************/ void Int_Clk(void) { uchar i; BCSCTL1&=~XT2OFF; //开启XT2振荡器 BCSCTL2|=SELM_2+SELS; //选择MCLK时钟源为XT2CLK;选择SMCLK时钟源为XT2CLK do { IFG1&=~OFIFG; for(i=0;i<100;i++) _NOP(); } while((IFG1&OFIFG)!=0); IFG1&=~OFIFG; } #include #include"DataType.h" /**************************************************************************** 初始定时器A ******************************************************************************/ void Int_TimerA(void) { TACTL = TASSEL_2 + ID_3 + MC_1;//定时器的时钟源选择ACLK,增计数模式 8M CCTL0 = CCIE;//使能CCR0中断 CCR0 = 50000;//设定周期为1s _EINT();//使能总中断 } #include "io430.h" #include "Timer.h" #include "clock.h" int main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; Int_Clk(); Int_TimerA(); P2DIR = 0XFF; P2OUT = 0XFF; return 0; } #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) { P2OUT = ~P2OUT; }
上一篇:MSP430-中断的使用
史海拾趣
|
小弟我最近在搞U-BOOT移植,但最后执行make后,提示arm-linux-gcc找不到, 我以为是环境变量的问题,结果用export $PATH命令看了一下,有这个目录, 但在最后却出现一个“not a valid identifier\",这个我想问一下是什么原因啊, 我的uboot目录 ...… 查看全部问答> |
|
各位大虾们,我现在用PCM-3586(CPU:vortex86DX)的板子开发一个程序,现在遇到了一个很棘手的问题,就是开发板不能同vs2005连接进行调试程序,必须通过U盘拷到板子上面去,非常麻烦。前几天试过用一根双公口的USB线让板子同PC连起来,但失败了。 ...… 查看全部问答> |
|
最近调试s3c2440,中断这里一直困扰着我 开始是调flash的时候,使能R/B中断,程序一运行就跑飞了,开始不知道原因,改作查询等待模式。 现在调试外部中断的时候这个问题又出现了 单步执行结果显示,2440捕捉到这个外部中断了,但是就是不去运行 ...… 查看全部问答> |
|
各位前辈: 相同的代码在动态库中调用RegOpenKeyEx RegCreateKeyEx返回不是ERROR_SUCCESS,是-11881138260,而用EVC调试就返回0即ERROR_SUCCESS,有谁遇到过?搞了几天了没进展,哪位前辈遇到过指点一二,谢谢啊!… 查看全部问答> |




