標(biāo)題:
基于msp430f5529的PWM波控制程序
[打印本頁(yè)]
作者:
gysworld
時(shí)間:
2020-12-28 17:44
標(biāo)題:
基于msp430f5529的PWM波控制程序
///*
// *
// * 按鈕調(diào)節(jié)PWM占空比
// *
// /*
#include <msp430f5529.h>
int pwm = 32; //給pwm附一個(gè)初始值
volatile unsigned int flag =0; //優(yōu)化賦值初始值flag=0
void Keyscan(); //鍵盤(pán)掃描
int main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 關(guān)閉看門(mén)狗
P1DIR |= BIT2; //設(shè)置1.2輸出波
P1SEL |= BIT2;
P4DIR |= BIT7; //燈LED2
P4OUT &=~BIT7;
P2OUT |= BIT1; //按鈕S1
P2REN |= BIT1;
TA0CCR0 = 64; //PWM周期定義
TA0CTL = TASSEL_1 + MC_1 + TACLR; //參考時(shí)鐘選擇ACLK,增計(jì)數(shù)模式,清除TAR計(jì)數(shù)器
while(1)
{
Keyscan();
if(flag!=0) //當(dāng)flag不等于0時(shí)
{
P4OUT |= BIT7; //4.7LED燈亮,高電平
}
else
{
P4OUT &=~ BIT7;
}
TA0CCTL1 = OUTMOD_7; //CCR1比較輸出模式7:復(fù)位,定位。
TA0CCR1 =pwm; //pwm占空比的定義,隨pwm的變化,占空比不同
}
}
void Keyscan()
{
if((P2IN&BIT1) ==0)
{
__delay_cycles(10000);
if((P2IN& BIT1)==0)
{
while((P2IN& BIT1)==0)
{
flag = ~flag; //取反
}
pwm = pwm-2; //先接示波器上看,占空比上升沿所占時(shí)間,啟動(dòng)的時(shí)候要低于1ms,然后按按鈕,讓占空比上升沿時(shí)間在1~2ms內(nèi)
//超過(guò)2ms,不轉(zhuǎn),低于1ms也停轉(zhuǎn)。
}
}
}
復(fù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1