求教:使用串口haluartwrite()时,IO输出被强制拉低
时间:10-02
整理:3721RD
点击:
程序如下:
第一部分,在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呢?请高手指教!谢谢
P0.6在原先协议栈里面用到Joystick的功能,有没有把这个功能屏蔽掉,保证只有你的程序在操作P0.6
谢谢,原因找到了,与i/o口复用没关系。haluartwrite函数返回的时候只是把数据发送到了串口缓冲buffer中,数据并没有真正从串口发送寄存器中全部发送出去。
正确的顺序是这样的,打开外围设备串口控制位,写串口,等数据全部从串口寄存器中发送完毕,再延时1ms(具体时间多少根据实际应用定),最后关闭外围设备串口控制位。
要对串口的底层工作机制有一定了解才行。
谢谢!
拉低 haluartwrite IO 相关文章:
- 2530在休眠模式下,调用HalUARTWrite往外界写数据,出现乱码!
- HalUARTWrite()函数输出 乱码显示
- 关于串口回调函数触发的条件,调用HalUARTWrite()触发了串口回调函数,什么原因呢?
- ZHA1.20自定义串口开机发送HalUARTWrite(SERIAL_APP_PORT,"+++",3);上位机出现乱码
- 关于Z-STACK Power Configuration等cluster
- 请问associated_devices_t AssocAddNew( uint16 shortAddr, byte extAddr, byte nodeRelation );中nodeRelation怎么得到?