高级会员
- 积分
- 527
- 金钱
- 527
- 注册时间
- 2017-11-2
- 在线时间
- 122 小时
|
5金钱
用的WLT8266藍牙模塊,MCU是STM32F030系列,手機APP發送數據給MCU可以收到(前提是第一次發送時要以 斷點方式讓MCU接收,否則MCU也收不到,重新上電后亦如此)
MCU發送數據給藍牙模塊,手機APP接收不到數據,不理解哪裡出問題了?
是藍牙還是我串口中斷的問題?
在藍牙模塊的TX,RX,GND引3條線出來,連接串口軟件,APP給MCU發數據時,MCU收到串口軟件收不到;MCU給APP發數據時,APP
收不到,串口軟件可以收到,迷惑呀!
以下是發送和接收中斷:
void USART2_IRQHandler(void)
{
if(USART_GetFlagStatus(USART2, USART_FLAG_RXNE)!=RESET) {
RxDataTemp=USART_ReceiveData(USART2);
USART_ClearFlag(USART2,USART_FLAG_RXNE);
RxData[RxCnt++] =RxDataTemp;
if((RxData[RxCnt-1]==0x0D)&&(RxData[RxCnt]==0x0A))
{
RxLength=RxCnt;
RxCnt =0;
//bakUpUartRecBuf(3);//throughout//
RxState=0x01;
USART_ITConfig(USART2, USART_IT_RXNE, DISABLE);
}
if(RxCnt>=100)
{
RxCnt =0;
USART_ITConfig(USART2, USART_IT_RXNE, DISABLE);
}
}
if(USART_GetITStatus(USART2, USART_IT_TC) != RESET)
//if(USART_GetFlagStatus(USART2, USART_FLAG_TC) != RESET)
{
//USART_ClearFlag(USART2,USART_FLAG_TC);
USART_SendData(USART2, TxData[TxCnt++]);
if(TxCnt==TxLength)
{
TxCnt = 0;
USART_ITConfig(USART2, USART_IT_TC, DISABLE);
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
}
}
}
|
最佳答案
查看完整内容[请看2#楼]
細節決定成敗;後面發現是AT指令格式發送有誤,沒有將\r\n發送出去,所以藍牙模塊沒回應,
添加\r\n后正常;透傳模式下MCU發送數據APP沒收到,應該是手機APP與藍牙模塊之間的
問題;
至於串口軟件,有時不能正常接收MCU或藍牙模塊發出的數據,這個還不明白,後面研究吧。
|