У меня модуль SIM800 отправляет SMS при работе с ним через терминал и USB/UART-преобразователь. При работе с STM32 он вообще отвечает на АТ-команды, но SMS отказывается отсылать. Баланс в норме, связь присутствует. В чем дело? Привожу код и лог, присылаемый STMко в отладчик.
Код: Выделить всё
char end_sms_cmd[] = {'\r','\n',26,'\0'};
printf("SMS with GSM Module\r\n");
printf("Checking Module...\r\n");
uint8_t flag=1;
while(flag==1){
uint8_t RxData[64] = {0};
printf("AT\r\n");
strcpy((char *)TxData, "AT\r\n");
HAL_UART_Transmit(&huart1,(uint8_t *)TxData,strlen(TxData),1000);
HAL_UART_Receive(&huart1, RxData, sizeof(RxData), 1000);
osDelay(1000);
printf(RxData);
printf("\r\n");
if(strstr((char *)RxData,"OK")){
printf("Module Connected\r");
flag=0;
}
else{printf("Module Unconnected\r");}
osDelay(1000);
}
strcpy((char *)TxData, "ATI\r");
HAL_UART_Transmit(&huart1,(uint8_t *)TxData,strlen(TxData),1000);
HAL_UART_Receive(&huart1, RxData, sizeof(RxData), 1000);
osDelay(1000);
printf("ATI is \r\n");
printf(RxData);
printf("\r\n");
osDelay(1000);
strcpy((char *)TxData, "AT+CSQ\r");
HAL_UART_Transmit(&huart1,(uint8_t *)TxData,strlen(TxData),1000);
HAL_UART_Receive(&huart1, RxData, sizeof(RxData), 1000);
osDelay(1000);
printf("CSQ is \r\n");
printf(RxData);
printf("\r\n");
osDelay(1000);
strcpy((char *)TxData, "AT+CCID\r");
HAL_UART_Transmit(&huart1,(uint8_t *)TxData,strlen(TxData),1000);
HAL_UART_Receive(&huart1, RxData, sizeof(RxData), 1000);
osDelay(1000);
printf("Phone number is is \r\n");
printf(RxData);
printf("\r\n");
osDelay(1000);
strcpy((char *)TxData, "AT+CREG?\r");
HAL_UART_Transmit(&huart1,(uint8_t *)TxData,strlen(TxData),1000);
HAL_UART_Receive(&huart1, RxData, sizeof(RxData), 1000);
osDelay(1000);
printf("CREG is \r\n");
printf(RxData);
printf("\r\n");
osDelay(1000);
strcpy((char *)TxData, "AT+COPS?\r");
HAL_UART_Transmit(&huart1,(uint8_t *)TxData,strlen(TxData),1000);
HAL_UART_Receive(&huart1, RxData, sizeof(RxData), 1000);
osDelay(1000);
printf("COPS is \r\n");
printf(RxData);
printf("\r\n");
osDelay(1000);
strcpy((char *)TxData, "AT+CMGF=1\r");
HAL_UART_Transmit(&huart1,(uint8_t *)TxData,strlen(TxData),1000);
HAL_UART_Receive(&huart1, RxData, sizeof(RxData), 1000);
osDelay(1000);
printf("AT+CMGF is \r\n");
printf(RxData);
printf("\r\n");
osDelay(1000);
strcpy((char *)TxData, "AT+CMGS=\"+79999999999\"\r");
HAL_UART_Transmit(&huart1,(uint8_t *)TxData,strlen(TxData),1000);
HAL_UART_Receive(&huart1, RxData, sizeof(RxData), 1000);
strcpy((char *)TxData, "SMS from SIM800");
HAL_UART_Transmit(&huart1,(uint8_t *)TxData,strlen(TxData),1000);
HAL_UART_Receive(&huart1, RxData, sizeof(RxData), 1000);
strcpy((char *)TxData, end_sms_cmd);
HAL_UART_Transmit(&huart1,(uint8_t *)TxData,strlen(TxData),1000);
HAL_UART_Receive(&huart1, RxData, sizeof(RxData), 1000);
printf("SMS is sent\r\n");
printf(RxData);
printf("\r\n");