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

📄 pwmdac.c

📁 easyARM2100开发板资料及应用程序举例说明
💻 C
字号:
/****************************************************************************
* 文件名:PWMDAC.C
* 功能:使用PWM6输出PWM信号,通过滤波电实现DAC转换。由KEY1控制PWM的占空比,
*      每按一次按键将会改变一次PWM的占空比。
* 说明:将跳线器JP11短接,JP6_RXD1断开。使用示波器观察测试点PWM和PWMDAC。
****************************************************************************/
#include  "config.h"

#define   KEY1		(1<<16)		/* P0.16引脚连接KEY1 */

/****************************************************************************
* 名称:WaitKey()
* 功能:等待一个有效按键。本函数有去抖功能。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  WaitKey(void)
{  uint32  i;

   while(1)
   {  while( (IO0PIN&KEY1)!=0 );		// 等待KEY1键按下
      for(i=0; i<50000; i++);			// 延时去抖
      if( (IO0PIN&KEY1)==0 ) break;
   }
   
   while( (IO0PIN&KEY1)==0 ); 			// 等待KEY1键放开
}


/****************************************************************************
* 名称:PWM_Init()
* 功能:初始化PWM功能模块,并由PWM6输出PWM波形。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  PWM_Init(void)
{   PWMPR = 0x00;			    // 不分频,计数频率为Fpclk
    PWMMCR = 0x02;			    // 设置PWMMR0匹配时复位PWMTC
    PWMMR0 = 2765;    		    // 设置PWM周期,PWMMR0=2765
    PWMMR6 = 1382;			    // 设置PWM占空比,PWMMR6=1382
    PWMLER = 0x41;			    // PWMMR0、PWMMR6锁存
    PWMPCR = 0x4000;			// 允许PWM6输出,单边PWM
    PWMTCR = 0x09;			    // 启动定时器,PWM使能
}


/* PWM周期及占空比设置值 */
#define  CYCLE_DATA				2000
#define  DUTY_CYCLE_DATA		1000
/****************************************************************************
* 名称:main()
* 功能:使用PWM6输出占空比可调的PWM波形。
****************************************************************************/
int  main(void)
{  uint32  pwmdata;				    // PWM占空比控制变量
	
   PINSEL0 = 0x00080000;			// 设置PWM6连接到P0.9管脚
   PINSEL1 = 0x00000000;			// 其它管脚设置为GPIO
   
   PWM_Init();				    	// PWM初始化
   
   pwmdata = DUTY_CYCLE_DATA;
   while(1)
   {  PWMMR0 = CYCLE_DATA;    		// 设置PWM周期,PWMMR0=CYCLE_DATA	
      PWMMR6 = pwmdata;			    // 设置PWM占空比,PWMMR6=pwmdata
      PWMLER = 0x41;				// PWMMR0、PWMMR6锁存,更新PWM占空比
      
      WaitKey();				    // 等待按键
      pwmdata += 100;				// 改变PWM占空比控制变量
      if(pwmdata>=CYCLE_DATA) pwmdata=0;
   }
   
   return(0);
}

⌨️ 快捷键说明

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