TI中文支持网
TI专业的中文技术问题搜集分享网站

用28335读gpio出现了一个奇怪的问题

这里是一段定义:(加过EALLOW和EDIS) 
     GpioCtrlRegs.GPCMUX1.bit.GPIO70 = 0;   //定义限位1
     GpioCtrlRegs.GPCDIR.bit.GPIO70=0;      //定义限位1方式为输入

     GpioCtrlRegs.GPCMUX1.bit.GPIO71 = 0;   //定义限位2
     GpioCtrlRegs.GPCDIR.bit.GPIO71=0;      //定义限位2方式为输入

定义了两个数据寄存器
#define  Fbit_EH     GpioDataRegs.GPCDAT.bit.GPIO70         // 定义限位1的数据寄存器
#define  Fbit_EV     GpioDataRegs.GPCDAT.bit.GPIO71         // 定义限位2的数据寄存器、

读数据寄存器的值
   FLAG_EH = Fbit_EH;
   FLAG_EV = Fbit_EV;

数据寄存器整形变量定义
int FLAG_EH,FLAG_EV;

用仿真器去查看FLAG_EH,FLAG_EV的值的时候,怎么都不能改变

查看若干资料和例程都没有发现有问题,求教!

yan shu:

肯定我外边输入过来的信号是变化了的,这个也是用示波器检测着

这里是一段定义:(加过EALLOW和EDIS) 
     GpioCtrlRegs.GPCMUX1.bit.GPIO70 = 0;   //定义限位1
     GpioCtrlRegs.GPCDIR.bit.GPIO70=0;      //定义限位1方式为输入

     GpioCtrlRegs.GPCMUX1.bit.GPIO71 = 0;   //定义限位2
     GpioCtrlRegs.GPCDIR.bit.GPIO71=0;      //定义限位2方式为输入

定义了两个数据寄存器
#define  Fbit_EH     GpioDataRegs.GPCDAT.bit.GPIO70         // 定义限位1的数据寄存器
#define  Fbit_EV     GpioDataRegs.GPCDAT.bit.GPIO71         // 定义限位2的数据寄存器、

读数据寄存器的值
   FLAG_EH = Fbit_EH;
   FLAG_EV = Fbit_EV;

数据寄存器整形变量定义
int FLAG_EH,FLAG_EV;

用仿真器去查看FLAG_EH,FLAG_EV的值的时候,怎么都不能改变

查看若干资料和例程都没有发现有问题,求教!

Jones Chen:

1.  外部变化的幅值 已经能够达到 所要求的电平了么? 即 低电平0.7V以下,高电平2.8V以上?

看代码好像没有问题。

2. 单步调试,代码可以执行到上面的语句么?程序运行正常么?

这里是一段定义:(加过EALLOW和EDIS) 
     GpioCtrlRegs.GPCMUX1.bit.GPIO70 = 0;   //定义限位1
     GpioCtrlRegs.GPCDIR.bit.GPIO70=0;      //定义限位1方式为输入

     GpioCtrlRegs.GPCMUX1.bit.GPIO71 = 0;   //定义限位2
     GpioCtrlRegs.GPCDIR.bit.GPIO71=0;      //定义限位2方式为输入

定义了两个数据寄存器
#define  Fbit_EH     GpioDataRegs.GPCDAT.bit.GPIO70         // 定义限位1的数据寄存器
#define  Fbit_EV     GpioDataRegs.GPCDAT.bit.GPIO71         // 定义限位2的数据寄存器、

读数据寄存器的值
   FLAG_EH = Fbit_EH;
   FLAG_EV = Fbit_EV;

数据寄存器整形变量定义
int FLAG_EH,FLAG_EV;

用仿真器去查看FLAG_EH,FLAG_EV的值的时候,怎么都不能改变

查看若干资料和例程都没有发现有问题,求教!

yan shu:

回复 Jones Chen:

电平都是低,然后用在该处设置断点,也可以执行到此处。但就是不改变值。(实际值是0,0,但CCS中看到的结果是1,0)

唯一就是我的读IO值是写在他Timer0中断中的,这会有影响么?

这里是一段定义:(加过EALLOW和EDIS) 
     GpioCtrlRegs.GPCMUX1.bit.GPIO70 = 0;   //定义限位1
     GpioCtrlRegs.GPCDIR.bit.GPIO70=0;      //定义限位1方式为输入

     GpioCtrlRegs.GPCMUX1.bit.GPIO71 = 0;   //定义限位2
     GpioCtrlRegs.GPCDIR.bit.GPIO71=0;      //定义限位2方式为输入

定义了两个数据寄存器
#define  Fbit_EH     GpioDataRegs.GPCDAT.bit.GPIO70         // 定义限位1的数据寄存器
#define  Fbit_EV     GpioDataRegs.GPCDAT.bit.GPIO71         // 定义限位2的数据寄存器、

读数据寄存器的值
   FLAG_EH = Fbit_EH;
   FLAG_EV = Fbit_EV;

数据寄存器整形变量定义
int FLAG_EH,FLAG_EV;

用仿真器去查看FLAG_EH,FLAG_EV的值的时候,怎么都不能改变

查看若干资料和例程都没有发现有问题,求教!

Jones Chen:

回复 yan shu:

如果在Timer0中断中,读此I/O值的时刻,I/O值确实已经变成低电平的话(确实低于0.7V),应该就没有问题,前提是程序能执行到此中断。

另外,能否看看此句的汇编代码是什么?

您也可以,先将此读状态语句,放到主函数中,再试试。

赞(0)
未经允许不得转载:TI中文支持网 » 用28335读gpio出现了一个奇怪的问题
分享到: 更多 (0)