[讨论] DSP28335在封锁脉冲时,为什么不相关的IO口置位了?

568991873   2015-4-15 17:56 楼主
我在封锁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;

回复评论 (5)

你先尝试一下,看看工程中有没有其他地方修改了GPIO6。
点赞  2015-4-16 09:08
引用: nemo1991 发表于 2015-4-16 09:08
你先尝试一下,看看工程中有没有其他地方修改了GPIO6。

我既然提问,那我肯定是查过了。我发现watchwindow中GPIO6的值依然是0,引脚输出确是高电平,不相符啊???
点赞  2015-4-16 11:13
引用: 568991873 发表于 2015-4-16 11:13
我既然提问,那我肯定是查过了。我发现watchwindow中GPIO6的值依然是0,引脚输出确是高电平,不相符啊???

你看的是data寄存器吗?

data寄存器显示的是管脚的真实电平。
点赞  2015-4-16 11:49
设置引脚值感觉用 GPASET、GPACLEAR和GPATOGGLE
GPADAT反应的是引脚状态,假设用它设置引脚状态为低,实际外面引脚接到了高电平,那最后GPADAT的状态还是为高。。。
我是dsp新手,个人想法,求验证。。。
点赞  2015-4-17 09:45
你这个方法,PWM引脚需要工作在IO模式,才能起作用,太麻烦了。
可以用TZ信号来封锁PWM信号,软件触发一个TZ信号,所有PWM同时封锁,安全可靠。
电子工程师技术交流QQ群:12425841,专注于自动控制、数字电源等
点赞  2015-4-17 15:12
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复