工具/软件:Code Composer Studio
我尝试在 MSP430 launchand 上使用 PWM 来提高/降低红色 LED 的强度、但由于某种原因、我的代码不会使 LED 变化强度。 我想使用我的 Timea.c 更改 PWM 信号。 我可以看到、唯一可能导致问题的原因是 TACCR0和 TACCR1的值之间存在差异。 现在 、当 TACCR1 应该是另一种时、它大于 TACCR0。 有人能帮助解决这个问题
这是我的 timerA.c 文件
#include "LED.h" #include "timerA.h" void ConfigureTimerA (void) { TA0CTL =(MC0 | TACLR); TA0CTL |=(tassel_2 |ID_2 | MC_1); //将值分配给时间 A0;捕获/比较寄存器0 TA0CCR0 = TA0CC499 ;TA0CCTL1 = TA0CC0 |启用 TA0CC0 | TA0CCTR1;TA0CC0 = TA0CCTR1 = TAIE; } 无符号整型方向= 0; #pragma vector = TIMER0_A0_VECTOR // CCIFG0 的中断服务例程__INTERRUPT void Timer0_A0_routine (void) { //光源最小值 if (TACCR1 =0) 方向= 0; //光最大值 否则、如果(TACCR0 == TACCR1) 方向= 1; //在最小增加占空比时亮起 if (DIRECTION ==0) TACCR1 --; //最大减小占空比时的光 否则、如果(DIRECTION = 1) TACCR1+; } #pragma vector = TIMER0_A1_vector // CCIFG1和 TAIFG 的中断服务例程 __interrupt void Timer0_A1_routine (void) { switch (TAIV){ case TA0IV_NONE: break; case TA0IV_TACCR1:// CCIFG1中断 TO_OFF_LED1; break; case TA0IV_TAIFG:// TAIFG 中断 turn _ON_LED1; break; default:for (;);//不能}
这是我的主文件
#include
#include "LED.h"
#include "button.h"
#include "timerA.h"
//全局变量
char LEDBit = LED1;
//函数原型
void ConfigureClockModule (void);
void main (void)
{
//停止看门狗计时器,并配置时钟模块。
WDTCTL = WDTPW + WDTHOLD;
ConfigureClockModule();
//初始化与 LED 关联的端口引脚,然后关闭 LED。
InitializeLEDPortPins();
//配置计时器 A 以生成所需的中断。
ConfigureTimerA();
enable_interrupts ();
//无限循环
while (1){
}
}
void TimeDelay (unsigned int delay、unsigned int resolution){
无符号 i;
TA0CTL =(MC_0 |TACLR);
TA0CCR0 =分辨率;
TA0CTL =(tassel_2|ID_2|MC_1);
对于(i=0;i