Всем привет! Столкнулся с такой проблемой. Есть модем siemens c35i, плата с stm32f100ret6b. Суть в том, что я посылаю команду на модем
| Код | char Buffer_CSCA[] = "AT+CSCA?\r"; GSM_COMM_SEND_SMS_SERVICE();
void GSM_COMM_SEND_SMS_SERVICE(){ DMA1_Channel4->CMAR = (uint32_t)Buffer_CSCA; DMA1_Channel4->CNDTR = sizeof(Buffer_CSCA); DMA1_Channel4->CCR |= DMA_CCR4_EN; }
|
команда ушла, получаю ответ
| Код | void USART1_IRQHandler(void){ //Прерывание USART1 if(USART1->SR & USART_SR_RXNE){ //Если прерывание вызвано по приёму USART1 USART1->SR &= ~USART_SR_RXNE; //Сбрасываем флаг приёма USART1 Buffer_Receive[i++] = USART1->DR; } }
|
То есть я просто набиваю массив, что бы на первом этапе пока посмотреть что приходит. В отладчике смотрю переменную Buffer_Receive приходит ответ как положено, примерно вот такой
| Код | \r\nAT+CSCA?\r\nAT+CSCA: 141, "+7911xxxxxxx", 20\r\nOK\r\n
|
А теперь прикол. Я не посылаю на модем команду, а жду звонок. Звоню на модем, а вместо \r\nRING\r\n в переменной оказывается вот что "Я0Еы". То есть просто четыре непонятных символа приходит при каждом ring. Одни и те же. Что это может быть? |