I got a new STM32F0 31 K6 nucleo board and I need to make a GSM UART interface on that board. I need to send an AT and receive an OK from the GSM board as a first step.I am able to transmit AT successfully But cannot receive anything. I am using IAR. I am using PA9 - TX and PA10 - RX. How to create a transmit and receive code using interrupts using this HAL library. I wrote code using interrupts and it's not giving a single character. This is my code
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)
{
}
}
IRQ handler
void USARTx_IRQHandler(void)
{
HAL_UART_IRQHandler(&UartHandle);
}
Receive callback function
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
{
if(UartHandle->Instance == USARTx)
{
/* Set transmission flag: transfer complete */
UartReady = SET;
BSP_LED_On(LED3);
}
}
And when I am debugging the code stuck at this point .
/*##-5- Wait for the end of the transfer ###################################*/
while (UartReady != SET)
{
}
My actual application is to send an SMS to the GSM board using UART and collect the reply in a buffer and then parse it.First i need to make this interface And I cannot use DMA as there is no idea on how much data is received on this commuunication.
please help guys..
Regards, olivia
No comments:
Post a Comment