Tengo una nueva placa de núcleo STM32F0 31 K6 y necesito hacer una interfaz GSM UART en esa placa. Necesito enviar un AT y recibir un OK de la tarjeta GSM como primer paso. Puedo transmitir AT correctamente Pero no puede recibir nada. Estoy usando IAR. Estoy usando PA9 - TX y PA10 - RX. Cómo crear un código de transmisión y recepción utilizando interrupciones utilizando esta biblioteca HAL. Escribí código usando interrupciones y no está dando un solo carácter. Este es mi código
int main(void)
{
HAL_Init();
/* Configure the system clock to 48 MHz */
SystemClock_Config();
/* Configure LED3 */
BSP_LED_Init(LED3);
UART_Init();
BSP_LED_Off(LED3);
if(HAL_UART_Transmit(&UartHandle, (uint8_t*)aTxBuffer, TXBUFFERSIZE,100)!= HAL_OK)
{
Error_Handler();
}
if(HAL_UART_Receive_IT(&UartHandle, (uint8_t *)aRxBuffer,6) != HAL_OK)
{
Error_Handler();
}
/*##-5- Wait for the end of the transfer ###################################*/
while (UartReady != SET)
{
}
/* Reset transmission flag */
UartReady = RESET;
/*if(HAL_UART_Transmit(&UartHandle, (uint8_t*)aRxBuffer, 6,1000)!= HAL_OK)
{
Error_Handler();
}*/
while (1)
{
}
}
controlador IRQ
void USARTx_IRQHandler(void)
{
HAL_UART_IRQHandler(&UartHandle);
}
Recibir la función de devolución de llamada
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
{
if(UartHandle->Instance == USARTx)
{
/* Set transmission flag: transfer complete */
UartReady = SET;
BSP_LED_On(LED3);
}
}
Y cuando estoy depurando el código atascado en este punto.
/*##-5- Wait for the end of the transfer ###################################*/
while (UartReady != SET)
{
}
Mi aplicación real es enviar un SMS a la placa GSM utilizando UART y recopilar la respuesta en un búfer y luego analizarla. Primero, necesito hacer esta interfaz Y no puedo usar DMA ya que no tengo idea de la cantidad de datos que se reciben en esta comunicación.
por favor ayuda chicos ..
Saludos, olivia