每次點一下按鍵,就改變一次占空比
主程序:
/*******************************************************************************
*File: Main.c
*功能: 使用PWM6輸出PWM信號,通過濾波電路實現(xiàn)DAC轉換.由KEY1控制PWM占空比,每按一次
* 按鍵將會改變一次PWM的占空比
*******************************************************************************/
#include "config.h"
#define KEY1 0x00004000 /*P0.14引腳連接KEY1*/
/*******************************************************************************
*名稱: WaitKey()
*功能: 等待一個有效按鍵,有去抖功能
*******************************************************************************/
void WaitKey(void)
{ uint32 i;
while(1)
{ while((IO0PIN&KEY1)!=0); //等待KEY1鍵按下
for(i=0;i<50;i++); //延時去抖
if((IO0PIN&KEY1)==0)break;
}
while((IO0PIN&KEY1)==0); //等待KEY1鍵放開
}
/*******************************************************************************
*名稱: main()
*功能: 使用PWM6輸出占空比可調的PWM波形
*******************************************************************************/
int main(void)
{ uint32 pwmdata; //PWM占空比控制變量
PINSEL0=0x00080000; //設置PWM6連接到P0.9引腳
PINSEL1=0x00000000; //其他引腳設置為GPIO
TargetInit(); //PWM初始化
pwmdata=34560;
while(1)
{ PWMMR0=69120; //設置PWM周期
PWMMR6=pwmdata; //設置PWM占空比
PWMLER=0x41; //PWMMR0,PWMMR6鎖存,更新PWM占空比
WaitKey(); //等待按鍵
pwmdata+=1000; //改變PWM占空比控制變量
if(pwmdata>=69120)pwmdata=0;
}
}
初始化程序:
/*********************************************************************************************************
** 函數(shù)名稱: TargetInit
** 功能描述: 目標板初始化代碼,在需要的地方調用,根據(jù)需要改變
********************************************************************************************************/
void TargetInit(void)
{
PWMPR=0x00; //不分頻,計數(shù)頻率為Fpclk
PWMMCR=0x02; //設置PWMMR0匹配時復位PWMTC
PWMMR0=69120; //設置PWM周期
PWMMR6=34560; //設置PWM占空比
PWMLER=0x41; //PWMMR0,PWMMR6鎖存
PWMPCR=0x4000; //允許PWM6輸出,單邊PWM
PWMTCR=0x09; //啟動定時器,PWM使能
/* 添加自己的代碼 */
}