exploring-usart-communication-modes-in-stm32

by Marwen Maghrebi
#include "main.h"

/* USER CODE BEGIN PV */
char str0[50] = "USART Polling Mode \n\r";
char str1[50] = "USART Interrupt Mode \n\r";
char str2[50] = "USART DMA Mode \n\r";
/* USER CODE END PV */

/* USER CODE BEGIN 0 */
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
 if (huart == &huart1)
 {
   HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, 0);
   HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, 1);
 }
 if (huart == &huart2)  
  {
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, 1);
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, 0);
  }
}
/* USER CODE END 0 */

int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_USART1_UART_Init();
  MX_USART2_UART_Init();

  while (1)
  {
    if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0)==GPIO_PIN_SET)         //Polling Mode
        {
      HAL_UART_Transmit(&huart1, (uint8_t*)str0, sizeof(str0),100);
      HAL_Delay(200);
        }
    else if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1)==GPIO_PIN_SET)       //Interrupt Mode
       {
      HAL_UART_Transmit_IT(&huart1,(uint8_t*)str1, sizeof(str1));
      HAL_Delay(200);
       }
    else if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_2)==GPIO_PIN_SET)       //DMA Mode
       {
      HAL_UART_Transmit_DMA(&huart2,(uint8_t*)str2, sizeof(str2));
      HAL_Delay(200);
       }
    else
    {
      HAL_UART_Abort(&huart1);
      HAL_UART_Abort(&huart2);
    }
  }
  /* USER CODE END 3 */
}
Are you sure want to unlock this post?
Unlock left : 0
Are you sure want to cancel subscription?
-
00:00
00:00
Update Required Flash plugin
-
00:00
00:00