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

求教:使用串口haluartwrite()时,IO输出被强制拉低

程序如下:

第一部分,在Zmain.c中对P0_6输出初始化

P0SEL&=~0x40;

P0DIR |=0x40;

P0_6=1;

 

第二部分

在应用程序中:

P0_6=1;

WaitUs(10000);

HalUARTWrite(0,&pkt->cmd.Data[1],10);

P0_6=0;

 

上图说明,1为P0_3写信号,2为P0_6(或P2_0)控制信号,

程序流程:P0_6置高电平,P0_3开始写数据,P0_3数据写完,P0_6置低电平。

协议栈:Z-stack home1.2.1

现在的问题:P03一写数据,P0_6就被拉低,串口用DMA和ISR都试过,都是这种情况。HalUARTWrite时如何不影响P0_6呢?请高手指教!谢谢

 

 

VV:

P0.6在原先协议栈里面用到Joystick的功能,有没有把这个功能屏蔽掉,保证只有你的程序在操作P0.6

user4398765:

回复 VV:

谢谢,原因找到了,与i/o口复用没关系。haluartwrite函数返回的时候只是把数据发送到了串口缓冲buffer中,数据并没有真正从串口发送寄存器中全部发送出去。

正确的顺序是这样的,打开外围设备串口控制位,写串口,等数据全部从串口寄存器中发送完毕,再延时1ms(具体时间多少根据实际应用定),最后关闭外围设备串口控制位。要对串口的底层工作机制有一定了解才行。

谢谢!

赞(0)
未经允许不得转载:TI中文支持网 » 求教:使用串口haluartwrite()时,IO输出被强制拉低
分享到: 更多 (0)