求助,帮忙解决下啊,谢了
我使用的是合众达的DEC-2812V1.0的板子,接温度传感器DS18B20(1)
#define DQ GpioDataRegs.GPFDAT.bit.GPIOF0
/* 产生复位脉冲初始化DS18B20*/
void TxReset(void)
{
GpioMuxRegs.GPFMUX.bit.SPISIMOA_GPIOF0=0; //设置为通用I/O口
GpioMuxRegs.GPFDIR.bit.GPIOF0=1; //1:输出0:输入
DQ=1;
DELAY(40);
DQ=0; //产生上升沿
DELAY(750);
DQ=1;
}
当我设置GPIOF0为输入口(GpioMuxRegs.GPFDIR.bit.GPIOF0=0),为什么示波器还是会有输出了?
(2)
void RxWait(void)
{
GpioMuxRegs.GPFDIR.bit.GPIOF0=1; //1:输出 0:输入
while(DQ);
while(~DQ); //检测到应答脉冲
DELAY(500);
GpioMuxRegs.GPFDIR.bit.GPIOF0=1;
DQ=1;
}
示波器测试DQ端有高低电平跳变,可是程序到while(DQ)就不能运行下去了,
是不是DSP里面不能while(DQ)和while(~DQ)这样表示的?
大家帮忙看一下啊,谢谢! (!) 找自己原因啦,这个功能没听谁说有问题过!
(2) DQ在RxWait()外部没变化的话,当然运行不下去! 先谢谢了,呵呵。
对于(2)
在示波器上能看到DQ端的高低跳变,即是说外部有变化的,可是运行不下去啊,程序没有问题?? DQ 是输出寄存器,不知是不是输入寄存器???
没用过2812,没看数据手册。印象中应该不是,有单独的输入寄存器。
也许DQ是个 只写的寄存器,读恒为0 或1。对于作为输出的IO 去读,还是自己去看数据手册说明吧!!
综上所叙,自己看数据手册!
页:
[1]