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

控制/MCU

1811人已加入

描述

描述: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();

}

}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分