利用TIMERA产生中断让P1.6每隔1ms闪烁一次问题

2019-03-24 12:31发布

本人想用定时器A每1ms产生产生一个中断,让P1.6电平转换,从而是LED2每隔1ms闪烁一次
#include "msp430g2553.h"
int main( void )
{
  // Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
  P1DIR=0x40;
  P1OUT=0x00;
  DCOCTL=0;
  BCSCTL1=CALBC1_1MHZ;
  DCOCTL=CALDCO_1MHZ;                                //设置DCO为1MHZ
  BCSCTL2 = SELM_1;                                      //主时钟和从时钟都选择DCOCLK
  TACCTL0 = CCIE;                                               //CCR0中断使能
  TACCR0 = 1000;                                              //设置定时器A每1ms中断一次
  TACTL |= TASSEL_2 + ID_0+MC_1;          //设置定时器A的时钟源为MCLK,并设置为不分频(1MHZ),增计数模式
//打开全局中断
    _EINT();
    while(1)
    {
     }

}
#pragma vector = TIMER0_A0_VECTOR
__interrupt void TimerA_ISR(void)
{
    P1OUT^=0x40;                  //电平翻转
TACCTL0&=~CCIFG;         //清除中断标志位   
}

然后下载到板子上测试发现LED2的灯一直亮着,即P1.6一直是高电平
偶尔我把上面的一句代码 BCSCTL2 = SELM_1;                                      //主时钟和从时钟都选择DCOCLK
改成 BCSCTL2 = SELM_1+0x08;                                      //主时钟选择DCOCLK,辅助时钟选择高频晶振
LED2灯闪烁了,这就奇怪了,我没有外接高频晶振的,但辅助时钟选择高频晶振反而使程序对了,难道辅助时钟选择DCOCLK会出问题的?这没有道理的,本人很是疑惑,希望懂的人能详细解答下,十分感谢!

[ 本帖最后由 WPD 于 2013-5-2 21:59 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
457887107
1楼-- · 2019-03-24 18:23
< 1ms取反一次
楼主你确定你的眼睛能分辨500Hz的闪烁?
板子上两个led似乎是不同颜 {MOD}的吧?如果是相同颜 {MOD}你可以把一个直接接高电平,看两个亮度是否一样.
最好的方法还是用示波器测一下波形,看是否有波形.
没有示波器,请将万用表调至交流档测一下P1.6,看是否有信号.
没有万用表. 我也没办法了..
jqh_111
2楼-- · 2019-03-24 20:17
< :TI_MSP430_内容页_SA7 --> 同意楼上,楼主的1ms真的太快了,你可以试着把时间设长一些。估计效果就出来了。还有,你选择的高频振荡器的频率应该没DCO高,所以能直观地看到LED闪烁。。
457887107
3楼-- · 2019-03-24 22:59
 精彩回答 2  元偷偷看……
457887107
4楼-- · 2019-03-24 23:52
顺便修整个错误
  1. TACTL |= TASSEL_2 + ID_0+MC_1;          //设置定时器A的时钟源为MCLK,并设置为不分频(1MHZ),增计数模式
复制代码TASSEL2是选择定时器时钟为SMCLK, MCLK是不可能给timer做时钟源的
WPD
5楼-- · 2019-03-25 00:52
十分感谢上面几楼的回答,确实如此,我把1000改成50000(50ms)之后,确实能看到闪烁了,1ms确实太快了,肉眼分辨不出来,“TASSEL2是选择定时器时钟为SMCLK, MCLK是不可能给timer做时钟源的,vloclk是12khz的,所以你的时钟为83.3us, 翻转时间则变成了83.3*1000=83.3ms, 约为12Hz, 低于25Hz,人眼可以分辨”,解决了我的疑惑!
jiangrenyong
6楼-- · 2019-03-25 05:13
 精彩回答 2  元偷偷看……

一周热门 更多>

相关问题

    相关文章