找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1328|回复: 4
打印 上一主题 下一主题
收起左侧

msp430单片机定时器A和定时器B冲突的问题

[复制链接]
跳转到指定楼层
楼主
ID:1083900 发表于 2023-7-17 19:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
include "msp430.h"
//功能:用TIMERA0 让P1.0口输出PWM  用TIMERB让LED闪烁
//问题:这两个定时器代码分开可以实现想要的功能   合并在一起使用LED闪烁功能无法实现

int main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P1DIR |= 0x01;                            // Set P1.0 to output direction
  //定时器A部分
  P1DIR |= BIT0+BIT2;
  P1SEL |= BIT0+BIT2;
  TA0CCR0 = 1000-1;
  TA0CCTL1 = OUTMOD_7;
  TA0CCR1 = 500;
  TA0CTL = TASSEL_1 + MC_1 + TACLR;
  //定时器B部分
  TBCCTL0 = CCIE;                           // TBCCR0 interrupt enabled
  TBCCR0 = 50000;
  TBCTL = TBSSEL_2 + MC_1 + TBCLR;          // SMCLK, upmode, clear TBR
  __bis_SR_register(LPM0_bits + GIE);       // Enter LPM0, enable interrupts
  //进入低功耗模式0 使能全局中断

  __no_operation();                         // For debugger
}

#pragma vector=TIMERB0_VECTOR
__interrupt void TIMERB0_ISR (void)
{
  P1OUT ^= 0x01;                            // Toggle P1.0 using exclusive-OR
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2023-7-18 08:24 | 只看该作者
记住一点就可以了。
中断服务程序中,不要用DELAY函数就可以了。
回复

使用道具 举报

板凳
ID:1087948 发表于 2023-7-31 13:17 | 只看该作者
你的代码中有两个定时器:定时器A和定时器B。其中,定时器A用于产生PWM信号,定时器B用于控制LED闪烁。

根据你的描述,当这两个定时器的代码分开使用时,它们可以实现各自的功能。但是,当你将它们合并在一起使用时,LED闪烁功能无法实现。

首先,请确保你正确地配置了定时器A和定时器B的时钟源和模式。例如,定时器A使用ACLK作为时钟源,并且以增计数模式运行;定时器B使用SMCLK作为时钟源,并且以增计数模式运行。

其次,注意到定时器B的中断向量是TIMERB0_VECTOR,而你的代码中没有配置相应的中断服务程序。因此,LED闪烁功能无法正常工作。

为了解决这个问题,你需要添加一个中断服务程序来处理定时器B的中断。在该中断服务程序中,通过对P1OUT进行异或操作来切换LED的状态。以下是一个示例中断服务程序的框架:

c
#pragma vector=TIMERB0_VECTOR
__interrupt void TIMERB0_ISR(void)
{
  P1OUT ^= BIT0;  // Toggle P1.0 using exclusive-OR
}
请将上述中断服务程序添加到你的代码中,并重新测试。这样,当定时器B计数达到TBCCR0所设置的值时,定时器B将触发中断,LED的状态将切换。

希望这能解决你的问题。如果还有其他疑问,请随时提问。
回复

使用道具 举报

地板
ID:879348 发表于 2023-7-31 14:39 | 只看该作者
没用过这款单片机,无非就是因为共用寄存器,设置A寄存器同时设置B了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表