找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 10002|回復(fù): 2
收起左側(cè)

stm32F4通過(guò)串口USART指令控制燈的亮滅的源碼

[復(fù)制鏈接]
ID:135031 發(fā)表于 2018-6-10 14:27 | 顯示全部樓層 |閱讀模式
詳細(xì)程序介紹stm32串口的配置使用
/*********************************************************************************************/
【*】程序簡(jiǎn)介

-工程名稱:USART—USART2指令控制RGB彩燈
-實(shí)驗(yàn)平臺(tái): 秉火STM32 F429 開(kāi)發(fā)板
-MDK版本:5.16
-ST固件庫(kù)版本:1.5.1

【 !】功能簡(jiǎn)介:
串口使用,串口接收數(shù)據(jù)指令控制RGB彩色燈。。

學(xué)習(xí)目的:學(xué)會(huì)使用STM32串口發(fā)送和接收數(shù)據(jù)。
         使用串口2,要分清串口2與串口1的時(shí)鐘是不一樣的,串口2是APB1時(shí)鐘,串口1是APB2時(shí)鐘。

【 !!】注意事項(xiàng):
接口:板子上邊沿中間的DB9接口
跳線帽:使用跳線帽連接 R1OUT<--->PD6,T1IN<--->PD5
串口波特率:115200

【 !】實(shí)驗(yàn)操作:
電腦端使用串口調(diào)試助手,選擇電腦與STM32相連的COM口,設(shè)置為115200-E-9-1,
復(fù)位開(kāi)發(fā)板,即可接收STM32串口發(fā)送給電腦的數(shù)據(jù)。
串口調(diào)試助手發(fā)送不同指令,RGB彩燈顯示不同顏色。

/*********************************************************************************************/

【*】 引腳分配

LED:
RGB彩燈的三個(gè)陰極接到STM32三個(gè)引腳上,LED低電平亮。

    R<--->PH10
    G<--->PH11
    B<--->PH12
   
    LED4<--->PD11
   
串口(RS232-DB9):
MAX232的收發(fā)引腳與STM32的發(fā)收引腳相連。
    T1IN<--->PD5
    R1OUT<--->PD6
   
   
/*********************************************************************************************/

【*】 時(shí)鐘

A.晶振:
-外部高速晶振:25MHz
-RTC晶振:32.768KHz

B.各總線運(yùn)行時(shí)鐘:
-系統(tǒng)時(shí)鐘 = SYCCLK = AHB1 = 180MHz
-APB2 = 90MHz
-APB1 = 45MHz

C.浮點(diǎn)運(yùn)算單元:
  不使用

單片機(jī)源程序如下:
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  fire
  5.   * @version V1.0
  6.   * @date    2015-xx-xx
  7.   * @brief   串口使用,串口接收數(shù)據(jù)指令控制RGB彩色燈。
  8.   ******************************************************************************
  9.   * @attention
  10.   *
  11.   * 實(shí)驗(yàn)平臺(tái):秉火  STM32F429 開(kāi)發(fā)板
  12.   *
  13.   ******************************************************************************
  14.   */
  15.   
  16. #include "stm32f4xx.h"
  17. #include "./led/bsp_led.h"
  18. #include "./usart/bsp_usart.h"
  19. #include "uartDrive.h"
  20. #include "uartProtocol.h"
  21. #include<stdio.h>

  22. static void Show_Message(void);
  23.   
  24. /**
  25.   * @brief  主函數(shù)
  26.   * @param  無(wú)
  27.   * @retval 無(wú)
  28.   */
  29. int main(void)
  30. {       
  31.   char ch;
  32.         uint32 delay=8000000;
  33.         int count = 0;
  34.   uint8 *ss="dfg\n";
  35.         uint8 buf[128];
  36.   /* 初始化RGB彩燈 */
  37.   LED_GPIO_Config();
  38.   
  39.   /* 初始化USART 配置模式為 115200 9-E-1 */
  40.   /* 增加了偶校驗(yàn)功能,發(fā)送字符長(zhǎng)度:8位有效數(shù)據(jù)+1位校驗(yàn)位 */
  41.   /* 特別注意串口調(diào)試助手的數(shù)據(jù)位選擇“8”即可 */
  42. //  USARTx_Config();
  43.         UART_DRIVE_Init();
  44.   /* 打印指令輸入提示信息 */
  45.         UART_PROTOCOL_Init();
  46.         UART_PROTOCOL_Process();
  47.   while(1)
  48.         {       
  49.     /* 獲取字符指令 */
  50. //    ch=getchar();
  51. //    printf("接收到字符:%c\n",ch);
  52.                 count += 1;
  53.     UART_DRIVE_Process();
  54.                 sprintf((char *)buf, "count:%d\n", count);

  55.     /* 根據(jù)字符指令控制RGB彩燈顏色 */
  56.                
  57.                 UART_DRIVE_AddTxArray(0x06, buf, strlen(buf));
  58.                 for(uint32 i=0; i<delay; i++);
  59. //    switch(ch)
  60. //    {
  61. //      case '1':
  62. //        LED_RED;
  63. //      break;
  64. //      case '2':
  65. //        LED_GREEN;
  66. //      break;
  67. //      case '3':
  68. //        LED_BLUE;
  69. //      break;
  70. //      case '4':
  71. //        LED_YELLOW;
  72. //      break;
  73. //      case '5':
  74. //        LED_PURPLE;
  75. //      break;
  76. //      case '6':
  77. //        LED_CYAN;
  78. //      break;
  79. //      case '7':
  80. //        LED_WHITE;
  81. //      break;
  82. //      case '8':
  83. //        LED_RGBOFF;
  84. //      break;
  85. //      default:
  86. //        /* 如果不是指定指令字符,打印提示信息 */
  87. //        Show_Message();
  88. //        break;      
  89. //    }   
  90.         }       
  91. }

  92. /**
  93.   * @brief  打印指令輸入提示信息
  94.   * @param  無(wú)
  95.   * @retval 無(wú)
  96.   */
  97. static void Show_Message(void)
  98. {
  99.   printf("\r\n   這是一個(gè)通過(guò)串口通信指令控制RGB彩燈實(shí)驗(yàn) \n");
  100.   printf("使用  USART2  參數(shù)為:%d 9-E-1 \n",USARTx_BAUDRATE);
  101.   printf("開(kāi)發(fā)板接到指令后控制RGB彩燈顏色,指令對(duì)應(yīng)如下:\n");
  102.   printf("   指令   ------ 彩燈顏色 \n");
  103.   printf("     1    ------    紅 \n");
  104.   printf("     2    ------    綠 \n");
  105.   printf("     3    ------    藍(lán) \n");
  106.   printf("     4    ------    黃 \n");
  107.   printf("     5    ------    紫 \n");
  108.   printf("     6    ------    青 \n");
  109.   printf("     7    ------    白 \n");
  110.   printf("     8    ------    滅 \n");  
  111. }

  112. /*********************************************END OF FILE**********************/

復(fù)制代碼

所有資料51hei提供下載:
USART—USART2指令控制RGB彩燈.rar (608.92 KB, 下載次數(shù): 66)


回復(fù)

使用道具 舉報(bào)

ID:295481 發(fā)表于 2018-9-23 23:45 | 顯示全部樓層
好貼,感謝分享
回復(fù)

使用道具 舉報(bào)

ID:638748 發(fā)表于 2019-11-9 17:55 | 顯示全部樓層
謝謝分享!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表