请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP430G2533 工具/软件:Code Composer Studio
我找到了一些实施PWM的代码。 我正在尝试进行修改,以便将换能器连接到WFP 2.6 ,以1 kHz PWM和50 % 占空比。 我的实施应该在启动板中生成红色LED变化强度,但它没有做任何事情。 PWM的新功能。 是否有人可以帮助正确实施?
我检查了TA0CCR0和TA0CCR1的值,结果显示无法读取
这是我的主要内容
#include <MSP430.h>
#include "timera.h"
//全局变量
//char LEDBit = LED1;
//函数原型
void ConfigureClockModule(void);
void main (void)
{
//停止看门狗计时器,并配置时钟模块。
WDTCTL = WDTPW + WDTHOLD;
ConfigureClockModule();
TA0CCR0 = 249;
TA0CCR1 = 5;
TA0CCTL1 = OUTMOD_7;//重置或设置
TA0CTL =(tassel_2 | ID_3 | MC_1 | TCLR | TAIE);// SMCLK | div 1 | up | CLR | ENABLED interrupt (启用中断)
//初始化与LED相关的端口引脚,然后关闭LED。
//配置定时器A以生成所需的中断。
配置时间A();
_enable_interrupts();
//无限循环
同时(1){}
}/*void
TimeDelay (无符号int延迟,无符号int分辨率){
未签名的I;
TA0CTL =(MC_0 |TALL);
TA0CCR0 =分辨率;
TA0CTL =(tassel_2|ID_3|MC_1);
对于(i=0;i<延迟;i++){
while (!(TA0CTL和TAIFG));
TA0CTL &=!TAIFG;
TA0CTL =(mc_0|TALCLR);
}
}*/
void ConfigureClockModule(void){
//使用工厂校准配置数字控制振荡器(DCO)。
DCOCTL = CALDCO_1MHz;
BCSCTL1 = CALC1_1MHz
;}
#include "LED.h"
#include "timera.h"
void ConfigureTimerA (void)
{
TA0CTL =(MC0 | TCLR );
TA0CTL |=(tassel_2 |ID_3 | MC_1);
//将值分配给时间A0;捕获/比较寄存器0
//启用捕获
TA0CCTL0 |CTIE
| CCTA0I=
|= TAIE;
}
unsigned int direction =0;
#pragma vector = TIMER0_A0_vector
// CCIFG0
__interrupt void Timer0_A0_routin(void){的中断服务例程
//最小强度
条件下的光(TACCR1 == 0)
方向= 1;
//最大强度时的光
,否则(TACCR0 = TACCR1)
方向= 0;
//最小值时的灯增加占空比
IF (方向= 0)
TACR1 --;//
最大减载占空比时的灯
,否则IF (方向== 1)
TACCR1+;
}
#pragma vector = TIMER0_A1_Vector
// CCIFG1和TAIFG
__interrupt void Timer0_A1_routin(void){
交换机(TAIV){
CASE TA0IV_NONE:
中断;
CASE TA0IV_TACTR1:// CCIFG1中断
P1DIR || BIT0;//输出
//P1OUT = 0;//清除输出引脚
P2SEL &=~BIT6;
P2SEL =~BIT7;//将WFP 2.6 设置为GPIO
P2DIR || BIT6;// WFP 2.6 作为输出
//P2OUT = 0;//清除输出引脚
中断;
CASE TA0IV_TAIFG:// TAIFG中断
IF (TA0CCR1 <= 15){
中断;
}
P1DIR || BIT0;//输出
P1OUT = 0;//清除输出引脚
P2SEL =~BIT6;//制作WFP 2.6 和7作为GPIO
P2DIR |= BIT6;// WFP 2.6 和2.7 作为输出
P2OUT =0;//清除输出引脚
断开;
默认值:对于(;;);//不能使用
}