我在封锁PWM波时执行下列程序,
void Stop_Pulses(void)
{
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;
GpioDataRegs.GPADAT.bit.GPIO0 = 1;
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO1 = 1; //1是输出
GpioDataRegs.GPADAT.bit.GPIO1 = 1;
GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO2 = 1; //1是输出
GpioDataRegs.GPADAT.bit.GPIO2 = 1;
GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO3 = 1; //1是输出
GpioDataRegs.GPADAT.bit.GPIO3 = 1;
GpioCtrlRegs.GPAMUX1.bit.GPIO4 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO4 = 1; //1是输出
GpioDataRegs.GPADAT.bit.GPIO4 = 1;
GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO5 = 1;
GpioDataRegs.GPADAT.bit.GPIO5 = 1;
执行的同时,为什么初化的GPIO6变为了高电平,我设制的是低啊???,是知道哇,谢谢了
GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO6=1;
GpioCtrlRegs.GPAPUD.bit.GPIO6=0;
GpioDataRegs.GPADAT.bit.GPIO6=0;
你先尝试一下,看看工程中有没有其他地方修改了GPIO6。
我既然提问,那我肯定是查过了。我发现watchwindow中GPIO6的值依然是0,引脚输出确是高电平,不相符啊???
设置引脚值感觉用 GPASET、GPACLEAR和GPATOGGLE
GPADAT反应的是引脚状态,假设用它设置引脚状态为低,实际外面引脚接到了高电平,那最后GPADAT的状态还是为高。。。
我是dsp新手,个人想法,求验证。。。
你这个方法,PWM引脚需要工作在IO模式,才能起作用,太麻烦了。
可以用TZ信号来封锁PWM信号,软件触发一个TZ信号,所有PWM同时封锁,安全可靠。
电子工程师技术交流QQ群:12425841,专注于自动控制、数字电源等