标题: DMX512 STM32F4控制程序源码 [打印本页]

作者: oj710268038    时间: 2018-8-30 09:55
标题: DMX512 STM32F4控制程序源码
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, 下载次数: 139)



作者: oj710268038    时间: 2018-8-30 09:58
核心思路是将32串口数据指针DR的第九位当作第一个停止位来用  注意起始码就没问题了
作者: 346500452    时间: 2018-9-4 17:27
代码糙了点吧
作者: 木示    时间: 2022-3-7 15:22
oj710268038 发表于 2018-8-30 09:58
核心思路是将32串口数据指针DR的第九位当作第一个停止位来用  注意起始码就没问题了

起始码?
作者: Longan.Wang    时间: 2023-8-3 13:40
代码太简单了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1