找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3889|回复: 4
打印 上一主题 下一主题
收起左侧

DMX512 STM32F4控制程序源码

[复制链接]
跳转到指定楼层
楼主
ID:391473 发表于 2018-8-30 09:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
stm32单片机源程序如下:
  1. #include "usart.h"
  2. #include "delay.h"
  3. #include "stm32f4xx.h"
  4. #include "dmx512.h"

  5. #define PD8 PDout(8) //串口3发送脚
  6. #define PD9 PDin(9) //串口3接收脚

  7. //------------------------------DMX512的通信驱动程序段-----------------------------------------------------

  8. u8 pDMX_buf ;
  9. //***********************************************************************
  10. u8 TXDData[512]; //发送缓冲区512个数据
  11. u8 RXDData[512]; //接收缓冲区512个数据


  12. void DMX_init(void) //DMX512初始化
  13. {
  14.                 USART_TX_EN=1;
  15. //        int i;
  16.                 TXDData[0] = 0; //起始码00
  17. //  for(i = 1; i<=512; i++)
  18. //  {
  19. //     TXDData[i] = 0;
  20. //  }
  21.                 TXDData[1] = 0XFF;
  22.                 TXDData[2] = 128;
  23.                 TXDData[3] = 00;
  24.        
  25.           TXDData[4] = 0;
  26.                 TXDData[5] = 255;
  27.           TXDData[6] = 0;


  28.           GPIO_ResetBits(GPIOD,GPIO_Pin_8);                                                                //输出低电平
  29.           delay_us(92);                                                         //延时92us
  30.           GPIO_SetBits(GPIOD,GPIO_Pin_8);                                                                        //输出高电平
  31.           delay_us(16);                                                         //延时15us
  32.        
  33. }

  34. void DMX_SendPacket(void) //发送DMX512数据
  35. {
  36.           pDMX_buf = 0;
  37.     USART_SendData1(USART3,TXDData[0]);
  38.           while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET ); //这里做缓冲区是否发送完判断

  39.            pDMX_buf ++;
  40.         for( pDMX_buf = 1;  pDMX_buf<=6;  pDMX_buf++)
  41.         {
  42.                         
  43.     USART_SendData(USART3,TXDData[pDMX_buf]);
  44.                
  45.     while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET ); //这里做缓冲区是否发送完判断
  46.         }
  47.        
  48.        

  49. }

复制代码

所有资料51hei提供下载:
dmx512控制程序.rar (462.23 KB, 下载次数: 131)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:391473 发表于 2018-8-30 09:58 | 只看该作者
核心思路是将32串口数据指针DR的第九位当作第一个停止位来用  注意起始码就没问题了
回复

使用道具 举报

板凳
ID:186619 发表于 2018-9-4 17:27 | 只看该作者
代码糙了点吧
回复

使用道具 举报

地板
ID:706724 发表于 2022-3-7 15:22 | 只看该作者
oj710268038 发表于 2018-8-30 09:58
核心思路是将32串口数据指针DR的第九位当作第一个停止位来用  注意起始码就没问题了

起始码?
回复

使用道具 举报

5#
ID:77589 发表于 2023-8-3 13:40 | 只看该作者
代码太简单了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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