在线时间0 小时
UID349334
注册时间2012-3-25
NXP金币0
该用户从未签到
新手上路

- 积分
- 130
- 最后登录
- 1970-1-1
|
昨天调程序,uart 9600波特率,收到数据后立即发送,接收和发送缓冲区独立,发现发送不正常,丢数据或错误数据发出。去掉2个delay就不正常,前面那个延时不加的话,乱码,后面延时不加——丢字节。
==================================================
delay_time(12000);
g_comm_send[3] = g_comm_buf[1];
g_comm_send[4] = g_comm_buf[2];
g_comm_send[5] = (retVal >> 24) & 0xff;
g_comm_send[6] = (retVal >> 16) & 0xff;
g_comm_send[7] = (retVal >> 8) & 0xff;
g_comm_send[8] = (retVal ) & 0xff;
g_comm_send[9] = 0;
gpio_write(gpio1,1);
uart_send(uart1,g_comm_send,10);
delay_time(50000);
gpio_write(gpio1,0);
----------------------------------------------------------------------------------------------------
void uart_send(DevObject *obj,uint8_t *ptr,uint16_t length)
{
uint16_t i;
UART_Type *uart = GET_UART(obj);
for (i = 0;i < length;i++)
{
while (! (uart->S1 & UART_S1_TDRE_MASK));
uart->D = (uint8_t) ptr;
}
}
=========================================================
gpio是用来使能485发送;如果单独发送好像没问题,我这个发送是接收到命令后,送应答的。两个缓冲是分开的且没别的地方有修改,给人感觉uart忙不过来,没有fifo的弊病。
|
|