Доброе время всем форумчанам. Прошу подсказать. Есть отладочная плата stm32f4 Discovery к ней подсоеденил ESP8266 по usart1 через пины PB6, PB7. И хочу посылать напрямую в устройство АТ-команды. и получать ответ. Среда разработки Keil.
Код основной функции такой.
код функции приема
код самого прерывания
что то плата принимает но не могу пjнять что ..на осцилографе видно что идет передача данных.. и плата даже что то отвечает но вот что она отвечает не понятно. Подскажите правильно ли идет передача АТ команды на устройство или надо как то по другому ее подавать и как если можно как правильно е принятьно ее прнять в режиме отладки? и возможно ли вообще так сделать проект?
Код основной функции такой.
Код:
uint8_t sendData[8]="AT";
uint8_t receivedData[10]={0};
uint8_t num = 2;
uint8_t numRx = 5;
/*******************************************************************/
int main(void)
{
int i =0;
MT_USART_Init1();
MT_USART_SendData(sendData, num);
while(!MT_USART_ReadyToExchange);
MT_USART_ReceiveData(receivedData, numRx);
while(1)
{
MT_USART_SendData(sendData, num);
while(!MT_USART_ReadyToExchange);
MT_USART_ReceiveData(receivedData, numRx);
}
}
Код:
void MT_USART_ReceiveData(uint8_t* pReceivedData, uint8_t nNumOfDataToReceive)
{
MT_USART_ReceivedDataPtr = pReceivedData;
MT_USART_NumOfDataToReceive = nNumOfDataToReceive;
MT_USART_NumOfDataReceived = 0;
MT_USART_ReadyToExchange = FALSE;
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
} // end of MT_USART_ReceiveData()
Код:
void USART1_IRQHandler()
{
if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
*MT_USART_ReceivedDataPtr = USART_ReceiveData(USART1);
MT_USART_ReceivedDataPtr++;
MT_USART_NumOfDataReceived++;
if (MT_USART_NumOfDataReceived == MT_USART_NumOfDataToReceive)
{
USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);
MT_USART_ReadyToExchange = TRUE;
}
}
if (USART_GetITStatus(USART1, USART_IT_TC) != RESET)
{
USART_ClearITPendingBit(USART1, USART_IT_TC);
USART_SendData(USART1, (uint8_t)*MT_USART_SendDataPtr);
MT_USART_SendDataPtr++;
MT_USART_NumOfDataSended++;
if (MT_USART_NumOfDataSended == MT_USART_NumOfDataToSend)
{
USART_ITConfig(USART1, USART_IT_TC, DISABLE);
MT_USART_ReadyToExchange = TRUE;
}
}
} // End of USART1_IRQHandler()
Последнее редактирование: