找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9829|回复: 2
收起左侧

stm32F4通过串口USART指令控制灯的亮灭的源码

[复制链接]
ID:135031 发表于 2018-6-10 14:27 | 显示全部楼层 |阅读模式
详细程序介绍stm32串口的配置使用
/*********************************************************************************************/
【*】程序简介

-工程名称:USART—USART2指令控制RGB彩灯
-实验平台: 秉火STM32 F429 开发板
-MDK版本:5.16
-ST固件库版本:1.5.1

【 !】功能简介:
串口使用,串口接收数据指令控制RGB彩色灯。。

学习目的:学会使用STM32串口发送和接收数据。
         使用串口2,要分清串口2与串口1的时钟是不一样的,串口2是APB1时钟,串口1是APB2时钟。

【 !!】注意事项:
接口:板子上边沿中间的DB9接口
跳线帽:使用跳线帽连接 R1OUT<--->PD6,T1IN<--->PD5
串口波特率:115200

【 !】实验操作:
电脑端使用串口调试助手,选择电脑与STM32相连的COM口,设置为115200-E-9-1,
复位开发板,即可接收STM32串口发送给电脑的数据。
串口调试助手发送不同指令,RGB彩灯显示不同颜色。

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

【*】 引脚分配

LED:
RGB彩灯的三个阴极接到STM32三个引脚上,LED低电平亮。

    R<--->PH10
    G<--->PH11
    B<--->PH12
   
    LED4<--->PD11
   
串口(RS232-DB9):
MAX232的收发引脚与STM32的发收引脚相连。
    T1IN<--->PD5
    R1OUT<--->PD6
   
   
/*********************************************************************************************/

【*】 时钟

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

B.各总线运行时钟:
-系统时钟 = SYCCLK = AHB1 = 180MHz
-APB2 = 90MHz
-APB1 = 45MHz

C.浮点运算单元:
  不使用

单片机源程序如下:
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  fire
  5.   * @version V1.0
  6.   * @date    2015-xx-xx
  7.   * @brief   串口使用,串口接收数据指令控制RGB彩色灯。
  8.   ******************************************************************************
  9.   * @attention
  10.   *
  11.   * 实验平台:秉火  STM32F429 开发板
  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  主函数
  26.   * @param  无
  27.   * @retval 无
  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.   /* 增加了偶校验功能,发送字符长度:8位有效数据+1位校验位 */
  41.   /* 特别注意串口调试助手的数据位选择“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.     /* 根据字符指令控制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  无
  95.   * @retval 无
  96.   */
  97. static void Show_Message(void)
  98. {
  99.   printf("\r\n   这是一个通过串口通信指令控制RGB彩灯实验 \n");
  100.   printf("使用  USART2  参数为:%d 9-E-1 \n",USARTx_BAUDRATE);
  101.   printf("开发板接到指令后控制RGB彩灯颜色,指令对应如下:\n");
  102.   printf("   指令   ------ 彩灯颜色 \n");
  103.   printf("     1    ------    红 \n");
  104.   printf("     2    ------    绿 \n");
  105.   printf("     3    ------    蓝 \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**********************/

复制代码

所有资料51hei提供下载:
USART—USART2指令控制RGB彩灯.rar (608.92 KB, 下载次数: 66)


回复

使用道具 举报

ID:295481 发表于 2018-9-23 23:45 | 显示全部楼层
好贴,感谢分享
回复

使用道具 举报

ID:638748 发表于 2019-11-9 17:55 | 显示全部楼层
谢谢分享!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表