MSP430单片机实现PWM控制LED灯的设计

MSP430单片机实现PWM控制LED灯的设计,第1张

描述:MSP430实现PWM。反映在LED灯上,可以看到LED灯的亮度不断变化

//

// ACLK= n/a, MCLK= SMCLK= default DCO ~ 800k

//

// MSP430F13x

// -------------------

// /|| XIN|-

// | | | 32kHz

// --|RST XOUT|-

// | |

// | P1.2|--》LED

//

//

// 硬件电路:MSP430F135核心实验板-I型

// 硬件连接:

//

// 调试器:MSP430FET全系列JTAG仿真器

// 调试软件: IAR Embedded Workbench Version: 3.41A 编译

//******************************************************************************

#include

void Init_CLK(void);

void Init_TImerA(void);

unsigned int nCount;

void Init_CLK(void)

{

unsigned int i;

//将寄存器的内容清零

//XT2震荡器开启

//LFTX1工作在低频模式

//ACLK的分频因子为1

BCSCTL1 = 0X00;

do

{

// 清除OSCFault标志

IFG1 &= ~OFIFG;

for (i = 0x20; i 》 0; i--);

}

while ((IFG1 & OFIFG) == OFIFG);

BCSCTL2 = 0X00;

//MCLK的时钟源为TX2CLK:2.048MHz,分频因子为0

BCSCTL2 += SELM1 + DIVM_0;

//SMCLK的时钟源为TX2CLK:2.048MHz,分频因子为1

BCSCTL2 += SELS + DIVS_0;

return;

}

void Init_TImerA(void)

{

nCount = 0;

TACTL = TASSEL1 + TACLR;// 选择SMCLK,清除TAR

CCTL0 = CCIE;// CCR0 中断允许

CCR0 = 65535 - 1;// PWM周期为256

CCTL1 = OUTMOD_7;// CCR1输出模式为“复位/置位”模式

TACTL |= MC1;// 增记数模式

return;

}

#pragmavector=TIMERA0_VECTOR//TImer_A中断函数

__interrupt void TimerA_ISR()

{

nCount += 655;

CCR1 = nCount;

}

int main(void)

{

// 关闭看门狗

WDTCTL = WDTPW + WDTHOLD;

P1DIR |= BIT2;// P1.2为输出

P1SEL |= BIT2;// 选择P1.2为TA1管脚

// 关闭中断

_DINT();

// 初始化

Init_CLK();

Init_TimerA();

// 打开中断

_EINT();

for(;;)

{

//CUP进入低功耗模式

_BIS_SR(LPM0_bits);

_NOP();

}

}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2570734.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-07
下一篇 2022-08-07

发表评论

登录后才能评论

评论列表(0条)

保存