汇聚全球视觉新闻资讯
你所在的位置:汇视网 > 聚焦 >科技

ARM7单片机(学习ing)—(七)、脉宽调制PWM—02

发布时间:2017-04-04 19:25  来源:汇视网   编辑:如思  阅读量:10389   

好了,这个实验也是比较简单的~~

通过按键来调整PWM的输出(这里周期不变,只是改变占空比)~~

七、脉宽调制(PWM)

七—(02)、可调整的PWM输出(后面的程序有一般的操作步骤,我没有进行双边沿的控制模式的实验,可以参照datasheet~~自己做做~~)

ARM7单片机(学习ing)—(七)、脉宽调制PWM—02
ARM7单片机(学习ing)—(七)、脉宽调制PWM—02

MDK7_1.c(貌似按键不起作用~~(*^__^*) 嘻嘻……等下回碰上我再试试吧~~)

//------------------------------------------------------------------------------

//可以调整的PWM输出

//首先呢,还是先介绍一下操作步骤:

//1)连接PWM功能引脚,设置相应位(PINSEL0、PINSEL1)

//2)设置PWM定时器的时钟分频器(PWMPR),得到所要的定时器时钟

//3)设置比较匹配控制(PWMMCR),并设置相应的比较值(PWMMRx)

//4)设置PWM输出方式,并允许PWM输出(PWMPCR)及锁存使能控制(PWMLER)

//5)设置PWMTCR,启动定时器,使能PWM

//6)运行过程中要更改比较值时,更改之后要设置锁存使能(PWMLER)

//------------------------------------------------------------------------------

//可以调整的PWM输出

//------------------------------------------------------------------------------

#include"lpc210x.h"

#include"macroandconst.h"

//------------------------------------------------------------------------------

#defineKEY 0x00004000 //P0.14引脚连接KEY

//------------------------------------------------------------------------------

//key_scan()

//等待检测按键函数

void key_scan()

{

uint32 i;

while(1)

{

while((IOPIN&KEY)!=0); //等待按键按下

for(i=0;i<50;i++); //延时消抖

if(IOPIN&KEY==0)

break;

}

while(IOPIN&KEY==0); //等待按键松手

}

//------------------------------------------------------------------------------

//pwm_init()

//PWM初始化函数

void pwm_init()

{

PWMPR=0X00; //不分频,技术频率为Fpclk

PWMMCR=0X02; //设置PWMMR0匹配时复位PWMTC

PWMMR0=2765; //设置PWM周期

PWMMR6=1382; //设置PWM占空比

PWMLER=0X41; //PWMMR0PWMMR6锁存

PWMPCR=0X4000; //允许PWM6输出,单边PWM

PWMTCR=0X09; //启动定时器,PWM使能

}

//------------------------------------------------------------------------------

//main()

int main()

{

uint32 pwm_data; //定义PWM占空比控制变量

PINSEL0=0X00080000; //设置PWM6连接到P0.9引脚

PINSEL1=0X00000000; //其它引脚设置为GPIO

IODIR=0; //设置所有引脚为输入

pwm_init();

pwm_data=1382;

while(1)

{

PWMMR0=2765; //设置PWM周期

PWMMR6=pwm_data; //设置PWM占空比

PWMLER=0X41; //PWMMR0、PWMMR6锁存,更新PWM占空比

key_scan();

pwm_data+=100;

if(pwm_data>=2764)

pwm_data=0;

}

}

郑重声明:此文内容为本网站转载企业宣传资讯,目的在于传播更多信息,与本站立场无关。仅供读者参考,并请自行核实相关内容。

相关搜索热词: