因为在多个项目中的需要,经常会使用到单片机中的一些PWM部分。今天跟大家分享一下新唐N76E003中PWM这部分的应用。N76E003中的PWM部分功能很多很强,大家可以参考它的规格书,我就不大篇 的拷贝了,我在实际应用中也只是使用了其中的一部分功能,所以也只能是“浅谈”。
对比ST的003和其它一些51的PWM部分,新唐的003有两个比较有意思的特点:
1.ST的003和51的PWM通常需要开一个定时器来配合,在配置PWM时,需要先将属于它的定时器打开,对定时器进行一些配置后再配置PWM,而新唐的003却不需要这样,只需要对它的PWM部分进行直接配置即可。
2.新唐的PWM部分可以大量使用它已经定义好的宏进行配置,只需要少量的操作寄存器就可以完成设置。这样可以节约很多时间。
下面简单的设置一个PWM的输出,完成PWM按规律变频输出,占空比保持50%的步骤:
1.需要对输出PWM的引脚进行配置,配置成推挽输出即可,这也可以通过定义好的宏进行,如:
P00_PushPull_mode;
2.配置PWM的初始化,有大量的宏定义可以参考,如:
PWM_CLOCK_FSYS;
PWM3_P00_OUTPUT_ENABLE;
PWM_INT_PWM3;
PWM_CENTER_TYPE;
PWM_CENTRAL_POINT_INT;
PWM_CLOCK_DIV_8;
这些定义从字面上就能理解它的作用,大家根据实际使用中所需要的功能来配置就好了。
3.设置周期和占空比,这个就需要配置寄存器了,周期使用PWMPH和PWMPL,占空比使用PWM3H,PWM3L,如:
PWMPH=0X01;
PWMPL=0XF4;
PWM3H=0X00;
PWM3L=0XFA;
要配置50%占空比的PWM,那么PWM3应该是PWMP的一半。
4.开中断,开始运行。这部分同样有定义,如:
set_EPWM;
set_EA;
set_LOAD;
set_PWMRUN;
5.要输出一个可变频率的PWM,就需要在PWM中断里按规律去修改PWMPH和PWMPL的值即可,要保持50%占空比,还需要对PWM3H和PWM3L的值同步修修,让它们保持在PWMPH和PWMPL的一半。
最后,PWM还有的一些其它功能,如死区时间控制:PWM01_DEADTIME_ENABLE;极性控制:PWM3_OUTPUT_INVERSE.这些要头文件中都有定义,很方便使用者调用。大家可以根据实际案例进行灵活使用。
在大家使用这些定义的时候,可能会遇到“BIT_TMP"警告的提示,大家需要定义一下”BIT_TMP“就可以了。
|
@lomo1316 :是我搞错了,不好意思,定时器1被串口设置过了,所以有点乱
问一下,手册里说,N76E300的PWM时钟选择,可以选择定时器1的溢出,为什么可以不用配置定时器1直接使用,反而配置定时器1的工作模式后,PWM不工作了,这是什么原因?