Подписаться на получение новых статей на почту:

Stm32 и ESP8266. Библиотека Си — Newlib. Шаг №86

Всем привет. Рассмотрев в прошлой статье конфигурацию интерфейса USART/UART используя библиотеки CMSIS, HAL для приема/передачи, теперь подключим esp8266 к stm32discovery. Подключение модуля WI-FI к кмикроконтроллеру AVR мы с Вами уже рассматривали. Здесь такой же принцип.

В написании программы используем стандартную библиотеку Си, которая идет вместе с компилятором ARM GCC. Она называется Newlib и представляет собой объединение нескольких библиотек под лицензией открытого ПО. Библиотека была разработана компанией Cygnus Solutions («Cygnus Support») как часть первого GNU набора инструментов для кросс-компиляции. В настоящее время поддерживается разработчиками компании Red Hat Джеффом Джонсоном и Томом Фитцсиммонсом.(https://sourceware.org/newlib/).

 

newlib CoIDE поддерживает (на вкладке Configure/Link) данный вариант как «base C library», а также еще один вариант Newlib-nano, (на вкладке «nano  С library») разработана людьми, которые занимаются поддержкой ARM GCC (рис. ниже). В программе ниже мы используем библиотеку string.h данной библиотеки.

Coocox_newlib

Подключаем модуль ESP8266. Для устройств STM32F303x6 / 8 / B / C / D / E, а в нашем случа stm32f303vct6, требуется рабочее напряжение питания 2,0 В — 3,6 В. Как уже писалось у них есть совместимый 5 вольтовые выводы. Но т.к. наш модуль работает на 3.3 В, то подключимся к 3В выводу на плате.

 

 

 

stm32_esp8266

Перейдем к программе. Ниже выложен исходник. С модулем мы работаем посредством AT-комманд. Переводим модуль в режим TCP-сервера. Обратимся с помощью браузера к серверу и выведем stm32. Подробные шаги описаны в статье ESP8266 и AVR №57.

int main (void) {
    ………………………………………….
     UART4_Send_String («AT\r\n»);
     uart_wite_for («Ok»);
     UART4_Send_String («AT+CIPMODE=0\r\n»);
     uart_wite_for («Ok»);
      UART4_Send_String («AT+CIPMUX=1\r\n»);
      uart_wite_for («Ok»);
      UART4_Send_String («AT+CIPSERVER=1,88\r\n»);
      uart_wite_for («Ok»);
      UART4_Send_String («AT+CIPSTO=5\r\n»);
      uart_wite_for («Ok»);
      while (1){
          UART4_Send_String («AT+CIPSEND=0,5\r\n»);
          uart_wite_for («OK»);
          UART4_Send_String («stm32\r\n»);
          delay ();
      }
}

void uart_wite_for (const char * str) { //Функция ожидания ответа.
      char result = 0;
      while (result == 0) {
           FLAG_REPLY = 0;
           clear_RXBuffer ();
           while (FLAG_REPLY == 0) { //Ожидание установки флага в прерывании
           }
           result = strspn (RXBuffer, str);
      }
}
void clear_RXBuffer (void) //Очистка буффера.
{
      for (RXi=0;RXi<RX_BUF_SIZE;RXi++)
           RXBuffer[RXi] = 0;
      RXi = 0; 
      FLAG_REPLY = 0;
}
void UART4_IRQHandler (void){ //Прерывание по приему
     unsigned char data;
      .....................................................................
     FLAG_REPLY=1;
     RXBuffer[RXi++]=data;
}

На рисунке ниже результат работы ESP8266.
terminal_web
История с терминала
AT
OK
AT+CIPMODE=0
OK
AT+CIPMUX=1
OK
AT+CIPSERVER=1,88
OK
AT+CIPSTO=5
OK
AT+CIPSEND=0,5
IPD,0,431:GET / HTTP/1.1
Host: 192.168.1.34:88
............................................................
OK
> stm32
busy s...
SEND OK
SEND OK-подтверждает успешную передачу.
Исходник:

ESP8266 and STM32F3 Discovery ( Скачали: 57 чел. ) 


Выше мы рассмотрели один из способов беспроводной передачи информации. В следующей статье мы вернемся к Android – приложению. И добавим в нашу программу SmartHouse функцию переключения wi-fi сетей, а также попробуем принять данные. На этом сегодня и остановимся. Всем пока.

Просмотрено 1452 раз.

Я на Google+

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting