This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR6989:使用计时器在定义的占空比下闪烁LED

Guru**** 2589280 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/633922/msp430fr6989-blinking-led-at-defined-duty-cycle-using-timer

部件号: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;
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    剩余步骤是使用P1SELx将引脚"连接"到计时器。

    从SLAS789B表6-17中读取:应设置PSEL0的BIT0。 (理论上,您还应该清除PSEL1的BIT0,尽管它可能已经是=0。)

    执行此操作后,软件PWM (在Timer_a()中)将不工作(这是正常的)。