📄 pwmdac.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 + -