21ic问答首页 - MM32通过DMA传输到蓝牙,再传输到手机的数据丢失的问题
MM32通过DMA传输到蓝牙,再传输到手机的数据丢失的问题
SEU98772021-06-04
请问我想用MM32向蓝牙模块HC05传输数据,然后用手机接受,但是传输的数据丢包,并且只传输第一位数据(类似HCO5:1111111111),用的DMA传输到蓝牙,
t = KEY_Scan(0); //get key value
if( t == KEY3_PRES )
{
sprintf((char*)sendbuf,"12345678 %d\r\n",sendcnt);
printf("%s",sendbuf);//显示发送数据
u2_printf("2346789abcdefgh %d\r\n",sendcnt); //发送到蓝牙模块
sendcnt++;
if(sendcnt>99)sendcnt=0;
t=0;
LED2_ON();
DELAY_Ms(100);
LED2_OFF();
}
(主循环里的),
void u2_printf(char* fmt,...)
{
va_list ap;
va_start(ap,fmt);
vsprintf((char*)USART3_TX_BUF,fmt,ap);
va_end(ap);
while(DMA_GetCurrDataCounter(DMA1_Channel2)!=0); //等待通道2传输完成
UART_DMA_Enable(DMA1_Channel2,strlen((const char*)USART3_TX_BUF)); //通过dma发送出去
}
这是传输函数
t = KEY_Scan(0); //get key value
if( t == KEY3_PRES )
{
sprintf((char*)sendbuf,"12345678 %d\r\n",sendcnt);
printf("%s",sendbuf);//显示发送数据
u2_printf("2346789abcdefgh %d\r\n",sendcnt); //发送到蓝牙模块
sendcnt++;
if(sendcnt>99)sendcnt=0;
t=0;
LED2_ON();
DELAY_Ms(100);
LED2_OFF();
}
(主循环里的),
void u2_printf(char* fmt,...)
{
va_list ap;
va_start(ap,fmt);
vsprintf((char*)USART3_TX_BUF,fmt,ap);
va_end(ap);
while(DMA_GetCurrDataCounter(DMA1_Channel2)!=0); //等待通道2传输完成
UART_DMA_Enable(DMA1_Channel2,strlen((const char*)USART3_TX_BUF)); //通过dma发送出去
}
这是传输函数
赞0
评论
2021-06-05
赞0
评论
2021-06-04
您需要登录后才可以回复 登录 | 注册