登錄|立即注冊|使用QQ帳號登錄
論壇 > STM32/8
發(fā)帖|
看5003|回4|收藏
樓主 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發(fā)送腳
  6. #define PD9 PDin(9) //串口3接收腳

  7. //------------------------------DMX512的通信驅動程序段-----------------------------------------------------

  8. u8 pDMX_buf ;
  9. //***********************************************************************
  10. u8 TXDData[512]; //發(fā)送緩沖區(qū)512個數(shù)據(jù)
  11. u8 RXDData[512]; //接收緩沖區(qū)512個數(shù)據(jù)


  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) //發(fā)送DMX512數(shù)據(jù)
  35. {
  36.           pDMX_buf = 0;
  37.     USART_SendData1(USART3,TXDData[0]);
  38.           while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET ); //這里做緩沖區(qū)是否發(fā)送完判斷

  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 ); //這里做緩沖區(qū)是否發(fā)送完判斷
  46.         }
  47.        
  48.        

  49. }


所有資料51hei提供下載:
dmx512控制程序.rar (462.23 KB)
(下載次數(shù): 139, 2018-8-30 16:25 上傳)

下載積分: 黑幣 -5




沙發(fā) ID:391473 只看他
2018-8-30 09:58
核心思路是將32串口數(shù)據(jù)指針DR的第九位當作第一個停止位來用  注意起始碼就沒問題了
板凳 ID:186619 只看他
2018-9-4 17:27
代碼糙了點吧
地板 ID:706724 只看他
2022-3-7 15:22

引用:

oj710268038 發(fā)表于 2018-8-30 09:58
核心思路是將32串口數(shù)據(jù)指針DR的第九位當作第一個停止位來用  注意起始碼就沒問題了

起始碼?
5# ID:77589 只看他
2023-8-3 13:40
代碼太簡單了

51黑電子論壇

Powered by Discuz! X3.1

首頁|標準版|觸屏版|電腦版