PWM占空比可调程序
时间:10-02
整理:3721RD
点击:
刚刚学习ARM7。对ARM的理解并不是很透彻。想用ARM实现一个占空比可调的程序。可是找了很久都没有找到。经过一番努力,终于实现了想要的功能。写上来给大家分享。希望对大家会有所帮助。
void __irq IRQ_PWM (void)
{
PWMIR = 0x01;
switch(i)
{
case 1:
PWMMR1 = 0;
PWMMR2 = Fpclk/300;
PWMLER = 0x7f;
break;
case 2:
PWMMR1 = 0;
PWMMR2 = 0;
PWMLER = 0x7f;
break;
}
i=!i;
VICVectAddr = 0x00; //标志位没有清除就清除
}
int main(void)
{
PINSEL0 = 0x000A800A;
PINSEL1 = 0x00000400;
PWMPR = 0x00;
PWMMCR = 0x03;
PWMMR0 = Fpclk/100;
PWMPCR = 0x7e54;
PWMTCR = 0x09;
//设置PWM中断IRQ
VICIntSelect = 0x00000000; // 8通道设置为IRQ中断
VICVectCntl8 = 0x20|8; // 优先级
VICVectAddr8 = (uint32)IRQ_PWM; // 设置中断服务程序地址
VICIntEnable = 1 << 8; // 使能PWM中断
while(1);
return(0);
}
void __irq IRQ_PWM (void)
{
PWMIR = 0x01;
switch(i)
{
case 1:
PWMMR1 = 0;
PWMMR2 = Fpclk/300;
PWMLER = 0x7f;
break;
case 2:
PWMMR1 = 0;
PWMMR2 = 0;
PWMLER = 0x7f;
break;
}
i=!i;
VICVectAddr = 0x00; //标志位没有清除就清除
}
int main(void)
{
PINSEL0 = 0x000A800A;
PINSEL1 = 0x00000400;
PWMPR = 0x00;
PWMMCR = 0x03;
PWMMR0 = Fpclk/100;
PWMPCR = 0x7e54;
PWMTCR = 0x09;
//设置PWM中断IRQ
VICIntSelect = 0x00000000; // 8通道设置为IRQ中断
VICVectCntl8 = 0x20|8; // 优先级
VICVectAddr8 = (uint32)IRQ_PWM; // 设置中断服务程序地址
VICIntEnable = 1 << 8; // 使能PWM中断
while(1);
return(0);
}
很好,不过,你下次放到一个贴子下面更好,便于管理
我是新手。所以请谅解。以后一定注意。
看看
火炬大厦解放和会计师的回复伺机待发
顶一个
请问小编,您的PWM信号的精度是多少呢?
很好,顶一下