wjhx 2024-09-12 07:33 采纳率: 84.6%
浏览 11
已结题

MSP430 定时器问题

MSP430F5系列,配置定时器TA,我想用做独立时间间隔,及可以独立启停的定时器。
在配置时,只使用了CCR0,每秒一次执行,运行正常:

    TA0CCTL0 = CCIE;
    TA0CCR0 += 32768;
    TA0CTL |=TACLR+TAIE;
    TA0CTL |= TASSEL_1 + MC_2; // ACLK

    // 中断中再执行 TA0CCR0 += 32768;

在某个时间,需要开启一个定时器,比如闪一个灯,然后我定义CCR1:

       GREEN_ON;    
      TA0CCTL1 = CCIE;
      TA0CCR1 += 10000;  // 约0.3

在中断中:

#pragma vector = TIMER0_A1_VECTOR
__interrupt void Timer_A(void)
{
    switch (__even_in_range(TA0IV,14))
    {
    case 2:
        TA0CCTL1 &= ~CCIE;
        GREEN_OFF;
        break;
    case 4:
    case 6:
    case 8:
    case 10:
    case 12:
    case 14:
        break;
    }
    
}

我的想法是,在需要闪灯时,开灯并打开一个定时器,定时器中断关灯,但实际上这个运行是错误的,查找资料后也没有找到问题出在哪里。

在连续模式下,是不是定时器不能独立启停?还是我在停止后设置的CCR1存在问题?
谢谢。

  • 写回答

1条回答 默认 最新

  • 一轮明月照丘壑 2024-09-12 18:16
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    对于MSP430的定时器问题,你在配置和使用过程中需要注意以下几个方面:

    1. 在配置定时器之前,确保已经正确初始化了相关的寄存器。比如,要确保TA0CTL寄存器已经被正确配置,包括时钟源选择(TASSSEL)、计数模式(MC)等。否则可能会导致定时器工作不正常。

    2. 对于独立启停定时器的问题,你需要明确的是,MSP430的定时器可以在连续模式下独立启停。你在开启定时器后,只需要通过软件控制中断使能位(CCIE)来控制定时器的启动和停止。当需要开启定时器时,设置CCIE位为有效;当需要停止定时器时,设置CCIE位为无效。所以你的代码在理论上应该是可行的。

    3. 对于你遇到的问题,我猜测可能的原因是在你设置CCR1的值时出现了问题。你可能没有考虑到定时器计数器的溢出问题。MSP430的定时器计数器是一个有限的值,当它达到最大值后会回绕到最小值并继续计数。如果你设置的CCR1的值小于TA0CCR的值(也就是上一次中断时的计数值),那么在定时器计数器回绕时可能会触发中断,导致你的程序无法正常工作。你可以尝试增加CCR1的值,确保它在每次中断时都能正确地重置计数器。另外还需要注意的是,如果你需要在一段时间内保持计时器的持续运行而不进行重置的话,则需要设置一个更高的计数值以得到需要的时间间隔。而在下一次操作定时器前(例如改变定时周期),应该先禁用计数器并重新加载计数器的值后再启动。这样就可以确保新的计数值会正确地从开始处开始计数。因此,在你的代码中,每次启动定时器前都需要确保TA0CCR1的值已经正确设置并且CCIE已经开启。另外,对于中断服务程序中的处理逻辑也需要仔细考虑和调试以确保其正确性。如果仍然存在问题,建议你在调试过程中使用仿真器来观察定时器的状态和行为,以便更好地定位问题所在。希望这些信息对你有所帮助!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月23日
  • 已采纳回答 9月15日
  • 修改了问题 9月12日
  • 创建了问题 9月12日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?