Цитата(Alechek @ May 18 2016, 10:17)

Для начала научитесь выражаться правильно. А то моя не понимать, что такое
Способен ли кто-нибудь еще понять документ SIM800 Series AT Command Manual V1.05.pdf с
описанными там AT командами, которые я отправляю с МК STM32 на SIM800 по UARTу?
Вроде что может быть проще. Отправил команду AT+CMGR=1,0 с помощью функции HAL_UART_Transmit
Код
static int8_t sendATcommandAndReadDataWithSendTimeOut(char* commandAT, void* response,
uint16_t buffLen, uint32_t sendtimeout,uint32_t rtimeout) {
HAL_StatusTypeDef r;
HAL_Delay(10);
UartHandle.State = HAL_UART_STATE_READY;
r = HAL_UART_Transmit(&UartHandle, (uint8_t*) commandAT, strlen(commandAT),
sendtimeout);
if (r != HAL_OK) {
return 0;
}
UartHandle.State = HAL_UART_STATE_READY;
r = HAL_UART_Receive(&UartHandle, response, buffLen, rtimeout);
if (r == HAL_ERROR) {
return 0;
};
return 1;
}
а HAL_UART_Receive как раз должна мне вернуть
Код
+CMGR: 1 .... тут дата,время, отправитель, текст смс
OK
если смс в наличии. И она это делает, если смс был принят SIM800 ранее.
Если смс не было то HAL_UART_Receive мне возвращает
Код
+CMGR:
OK
И так в цикле я опрашиваю и жду смс. Тут она приходит и мне UART
ничего не возвращает. Ни HAL_ERROR ни HAL_BUSY ни HAL_OK. Таймаут
в функции HAL_UART_Receive истекает и я вижу просто пустой буфер.
Функции HAL_UART_**** из stm32l0xx_hal_uart.h. Копирайт STMicroelectronics.