各位好:
基于28335实际需求设计了一个PWM开和PWM关的程序,使用了EPWM1、EPWM3两个模块,主要思路如下:通过寄存器TZFRC.OST置位实现PWM信号关断,通过对寄存器TZCLR.OST置位实现PWM信号开启,其中主程序初始化时,运行了PWM关程序,在程序运行期间,检测到按键1按下,则启动PWM,检测到按键2按下,则关闭PWM,按键程序检测无误,在DSP芯片上电后,出现了以下问题无法解决:
1、芯片初上电还未运行前,EPWM1和EPWM3输出的IO口电平持续为高电平;
2、程序开始运行后,检测到按键2按下后,EPWM信号停止,但EPWM1和EPWM3输出的IO口电平持续为高电平;
3、GPIOA的其他口的电平也呈现高低不同,比如GPIO15电平为高、GPIO11电平就为低,实际上程序中并未使用到这两个IO口,也未作任何配置,不知为何呈现这种状况;
4、程序其他地方用到了ECAP1,IO口为GPIO24,检测IO口电压为1.8V,与CPU内核电压相同,不知为何缘故?
附PWM开关程序:
#define mPWM_ON() {EALLOW; \
EPwm3Regs.TZCLR.bit.OST = 1; \
EDIS;}
#define mPWM_OFF() {EALLOW; \
EPwm3Regs.TZFRC.bit.OST = 1;\
EDIS;}
#define mSPWM_ON() {EALLOW; \
EPwm1Regs.TZCLR.bit.OST = 1;\
EDIS;}
#define mSPWM_OFF() {EALLOW; \
EPwm1Regs.TZFRC.bit.OST = 1;\
EDIS;}