原子哥,我现在用蓝牙进行发送和接受,在发送函数中,一次发5200Byte,我试了试相邻两次发送之间如果不加一定的延时的话,就无法发送,延时时间太短的话,接受端也无法接受,延时时间越长,收发就正常,是我程序配置的问题,还是硬件的问题,用串口能实现500kbp/s的传输吗
[mw_shl_code=c,true] while(1)
{
USART1->CR3=1<<7; //使能串口DMA发送 ,一次发送5200Byte
USART1_DMA_Enable(DMA1_Channel4);//进行DMA发送
if(DMA1->ISR&(1<<13))//发送完成
{
DMA1->IFCR|=1<<13;//清楚发送完成标志
DMA_SEND_CNT++; //记录发送次数
}
LED1=!LED1;
// LCD_ShowNum(30,90,DMA_SEND_CNT,16,16);
delay_ms(200); //这个延时小于200ms,收发就不正常
}
}[/mw_shl_code]
[mw_shl_code=c,true]/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////[/mw_shl_code]
[mw_shl_code=c,true]以下是接收过程,接收过程只是在主函数配置好之后就等待串口接收中断[/mw_shl_code]
[mw_shl_code=c,true]void USART1_IRQHandler(void)
{
u8 res;
if(USART1->SR&(1<<5))//接受到数据
{
res=USART1->DR;
if(USART1_RX_STA<USART1_REC_LEN) //未接收完成
{
USART1_RX_BUF[USART1_RX_STA]=res; //接受缓存
USART1_RX_BUF[USART1_RX_STA]=0; //清除缓存
USART1_RX_STA++;
}
else if(USART1_RX_STA==USART1_REC_LEN) //接受一次完成
{
USART1_RX_STA=0; //清零,等待下一次接受
USART1_RX_CNT++; //记录接受次数
LED0=!LED0;
// USART1_RX_STA|=1<<15;
}
} [/mw_shl_code]
[mw_shl_code=c,true]请原子哥支个招[/mw_shl_code]
[mw_shl_code=c,true]
[/mw_shl_code]
|