#define RS485_TX do{GPIO_SetBits(GPIOA, GPIO_Pin_8);}while(0)
#define RS485_RX do{GPIO_ResetBits(GPIOA, GPIO_Pin_8);}while(0)
while(1)
{
DIS_INT();
loop_poll_time = jiffies + LOOP_FRQ;
EN_INT();
Class_Poll();
Hc_Handle1();
Hc_Handle2();
m_poll();
RS485_TX;
uart_poll();
uart_poll2();
presskey = keybrd_poll();
RS485_RX;
ds_presskey = dip_switch_Scan();
key_status = presskey;
dipSwitch_key_status = ds_presskey;
if (presskey != NO_KEY)
{
if (presskey == KEY_RST)
{
/*
if (k_buf_i < K_BUF_SIZE ) k_buf[k_buf_i++] = 0x66;
last_key = KEY_RST;
*/
}
else
{
// led_process_poll(key);
//videoadjustfunction();
MApi_VideoAdjustHandler();
}
}
if(savevideodata_flag == 1)
{
}
/* Wait for next loop */
while(1)
{
DIS_INT();
if (jiffies >= loop_poll_time)
{
EN_INT();
break;
}
EN_INT();
}
}
请教下main里面是上面循环,为什么我RX的时候收不到其他机器通过USART1发来的数据,
用示波器测量,在一个loop里TX的时间远大于RX的时间,会不会有影响?
可是我用statemachine,将TX阶段的函数分成不同的state发送,也不能收其他机器发来的数据,而只要把
#define RS485_TX //do{GPIO_SetBits(GPIOA, GPIO_Pin_8);}while(0)这么注释掉,就
可以正常接收了。。。
请教高手,有什么解决办法,,谢谢。485芯片用的isl83088,,会不会有关哦。。
|