请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP430FR6989 您好,我对微控制器非常熟悉。 我有一个关于使用计时器根据预定义的占空比闪烁LED的问题。 我可以使LED以相同的时间间隔打开和关闭,但我尝试让LED在25 % 时间内保持亮起,在其余时间保持熄灭。 我的代码如下。
#include "MSP430-h"
#include "intrinsics.h"
/*配置时钟
源LFXTCLK到ACLK,除以32。 结果时钟"应该"在
1 kHz时振荡。 */
void configureClocks(void){
CSCTL0 = CSKEY; //时钟控制寄存器密码
CSCTL2 =拉美经济体系_LFXTCLK; //源LFXT至ACLK
CSCTL3 = DIVA_32; //除以32
}
int main(void){
configureClocks();
WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
PMMCTL0 = PMMPW; //打开PMM模块
PM5CTL0 &=~LOCKLPM2 5; //清除锁定IO引脚
P1DIR |= BIT0; //将WFP 1.0 设置为输出方向
//P1OUT &= 0x00; //初始化WFP 1.0
TA0CCTL0 = CCIE; //从定时器A启用中断
TA0CCTL1 = OUTMOD_7;
TA0CCR0 = 1024-1;
TA0CCR1 = 256-1; //占空比25 %
TA0CTL = tassel_1 + ID_1 + MC_1;//带ALCK的源计时器A,除以1
_BIS_SR(LPM0_bits + GIE);
}
#pragma vector=TIMER0_A0_vector
__interrupt void Timer_A (void)
{
P1OUT ^= BITS0;
}