[原创] STM32 L4 串口发送指令控制灯闪烁

xutong   2017-11-2 18:55 楼主
  1. #include "stm32l4xx_hal.h"
  2. #include "periph.h"
  3. UART_HandleTypeDef UartHandle;
  4. uint8_t aRxBuffer;
  5. int main()
  6. {
  7.     char ch[]="hello word";
  8.     HAL_Init();
  9.     SystemClock_Config();
  10.          Gpio_Inits();
  11.   __HAL_RCC_USART2_CLK_ENABLE();
  12.        
  13.    
  14.     UartHandle.Instance        = USART2;
  15.   UartHandle.Init.BaudRate   = 9600;
  16.   UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
  17.   UartHandle.Init.StopBits   = UART_STOPBITS_1;
  18.   UartHandle.Init.Parity     = UART_PARITY_NONE;
  19.   UartHandle.Init.HwFlowCtl  = UART_HWCONTROL_NONE;
  20.   UartHandle.Init.Mode       = UART_MODE_TX_RX;
  21.        
  22.     HAL_UART_Init(&UartHandle);
  23.        
  24.        
  25.          HAL_NVIC_SetPriority(USART2_IRQn, 1, 0);
  26.   HAL_NVIC_EnableIRQ(USART2_IRQn); //¿aÆô′®¿úÖD¶Ï2
  27.        
  28.        
  29.           HAL_UART_Receive_IT(&UartHandle,&aRxBuffer,1);
  30.                
  31.     HAL_UART_Transmit(&UartHandle, (uint8_t *)&ch, 10, 0xFFFF);
  32.                
  33.     while(1)
  34.     {
  35.                         switch(aRxBuffer)
  36.                         {
  37.                                 case '1':
  38.                                 {
  39.                                          HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5, GPIO_PIN_RESET);
  40.                        
  41.                                         break;
  42.                                 }
  43.                                 case '2':
  44.                                 {
  45.                                          HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5, GPIO_PIN_SET);
  46.                                
  47.                                         break;
  48.                                 }
  49.                                 default:
  50.         {
  51.                                         HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);
  52.                                          HAL_Delay(500);
  53.                                         HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);
  54.                                          HAL_Delay(500);
  55.                                         break;
  56.                                 }
  57.    
  58.                         }

  59.     }
  60. }
  61. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *husartx)
  62. {
  63.   HAL_UART_Transmit(&UartHandle,&aRxBuffer,1,0);  //·¢ËíArxBuffer
  64.   HAL_UART_Receive_IT(&UartHandle,&aRxBuffer,1);   //ÖØD¿aÆô½óêÕÖD¶Ï
  65. }
  66. void  USART2_IRQHandler(void)
  67. {
  68.   HAL_UART_IRQHandler(&UartHandle);
  69. }



此内容由EEWORLD论坛网友xutong原创,如需转载或用于商业用途需征得作者同意并注明出处

希望做一些大家觉得好用的东西!

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复