ARM产生PWM波形
时间:10-02
整理:3721RD
点击:
#include<NXP/IOLPC2138.H>
void main(void)
{
PINSEL0=0X00000080; //设置为匹配输出口
T0TCR=0X02; //复位计数器
T0TC=0; //清零定时计数器
T0PR=0; // 不分频
T0EMR=0X11; //先让外部匹配0输出高电平,在发生匹配时输出低电平
T0MR0=500000; //匹配0记数值,也就是高电平持续时间
T0MR1=2000000; //匹配1记数值,也就是PWM的周期
T0MCR=0X18; // 外部匹配1发生时产生中断并且复位
T0TCR=1; //开始记数
while(1) //不断循环
{
//while(T0IR!=0X02); //等待产生中断,T0IR的第2位(MR1)会置位
T0IR=0X02; //向T0IR的第2位(MR1)写1清零中断标志
T0EMR=0X11; // 重复让外部匹配0输出高电平,在发生匹配时输出低电平
}
}
如果倒数第3句不加,用protues仿真可以出现25%的PWM波形,但是加了反而不能产生,我很不解,正常的应该是要加才对啊,请哪位高手指点一下迷津,非常感谢!
void main(void)
{
PINSEL0=0X00000080; //设置为匹配输出口
T0TCR=0X02; //复位计数器
T0TC=0; //清零定时计数器
T0PR=0; // 不分频
T0EMR=0X11; //先让外部匹配0输出高电平,在发生匹配时输出低电平
T0MR0=500000; //匹配0记数值,也就是高电平持续时间
T0MR1=2000000; //匹配1记数值,也就是PWM的周期
T0MCR=0X18; // 外部匹配1发生时产生中断并且复位
T0TCR=1; //开始记数
while(1) //不断循环
{
//while(T0IR!=0X02); //等待产生中断,T0IR的第2位(MR1)会置位
T0IR=0X02; //向T0IR的第2位(MR1)写1清零中断标志
T0EMR=0X11; // 重复让外部匹配0输出高电平,在发生匹配时输出低电平
}
}
如果倒数第3句不加,用protues仿真可以出现25%的PWM波形,但是加了反而不能产生,我很不解,正常的应该是要加才对啊,请哪位高手指点一下迷津,非常感谢!
路过,看看,看看
飘过看看 不明白呀不明白呀
, 真 是 好 东 西 啊 。
不太明白,等大神