⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 周立功的lpc2131的板子 pwm脉宽调制
💻 C
字号:
#include "config.h"
#define KEY1 0x00004000    //P0.14接KEY1
#define KEY2 0x00008000    //P0.15接KEY2
#define KEY  0x0000c000    //未有键按下
uint8 flag;
void Init(void);

/*名称:WaitKey()
 *等待一个有效按键,包含去拌功能*/
void WaitKey(void)
{
 	uint32 i;
 	while(1)
 	{
 		while((IOPIN&KEY)==KEY);
 		for(i=0;i<50;i++);
 		if((IOPIN&KEY)!=KEY)
 		{
 			if((IOPIN&KEY)==KEY2)      //按键1按下
 			flag=1;
 			if((IOPIN&KEY)==KEY1) //按键2按下
 			flag=0;
 			break;
 		}
 		break;
 	}
 	while((IOPIN&KEY)!=KEY);
}
 
 /*名称:main()
  *功能:使用PWM6输出占空比可调的PWM波形*/
 int main(void)
 {
 	uint32 pwmdata;
 	PINSEL0=0x00080000;
 	PINSEL1=0x00000000;
 	IODIR=0x0;
 	Init();            //PWM初始化
 	pwmdata=1000;
 	while(1)
 	{
 		PWMMR0=3000;        //设置PWM周期
 		PWMMR6=pwmdata;     //设置PWM占空比
 		PWMLER=0x41;        //更改的值下一次定时器复位时生效
 		WaitKey();          //等待按键
 		if(flag==1)
 		{
 			pwmdata+=100;       //改变占空比变量
 			flag=3;
 		}
 	    if(flag==0)
 	    {
 			pwmdata-=100;
 			flag=3;
 		}
 		if(pwmdata<=1)
 		pwmdata=3000;
 		if(pwmdata>=3000)
 		pwmdata=0;
 	}
 	return(0);
 }
 
 /*名称:TargetInit(void)
  *功能:目标板初始化*/
void Init(void)
{
	PWMPR=0x00;     //不分频,计数频率为Fpclk
	PWMMCR=0x02;    //PWMMR0匹配时复位PWMTC
	PWMMR0=3000;    //PWM周期
	PWMMR6=1000;    //PWM占空比
	PWMLER=0x41;	//更改的值下一次定时器复位时生效
	PWMPCR=0x4000;  //允许PMW6单边沿控制
	PWMTCR=0x09;    //PWM使能,启动计数器
}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -