• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP8266+STM32F4Discovery AT-команды

Mifodij

New member
Доброе время всем форумчанам. Прошу подсказать. Есть отладочная плата stm32f4 Discovery к ней подсоеденил ESP8266 по usart1 через пины PB6, PB7. И хочу посылать напрямую в устройство АТ-команды. и получать ответ. Среда разработки Keil.
Код основной функции такой.

Код:
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()
что то плата принимает но не могу пjнять что ..на осцилографе видно что идет передача данных.. и плата даже что то отвечает но вот что она отвечает не понятно. Подскажите правильно ли идет передача АТ команды на устройство или надо как то по другому ее подавать и как если можно как правильно е принятьно ее прнять в режиме отладки? и возможно ли вообще так сделать проект?
 
Последнее редактирование:

CodeNameHawk

Moderator
Команда форума
Послать AT недостаточно, нужны символы перевода строки и возврата каретки.
 

Mifodij

New member
Добрый день. CodeNameHawk, извините хотел сказать что так и попробую но вотчтополучилось.. а потом стали проблемы с нетом.... и не мог зайти.
 
Сверху Снизу