标题:
DMX512 STM32F4控制程序源码
[打印本页]
作者:
oj710268038
时间:
2018-8-30 09:55
标题:
DMX512 STM32F4控制程序源码
stm32单片机源程序如下:
#include "usart.h"
#include "delay.h"
#include "stm32f4xx.h"
#include "dmx512.h"
#define PD8 PDout(8) //串口3发送脚
#define PD9 PDin(9) //串口3接收脚
//------------------------------DMX512的通信驱动程序段-----------------------------------------------------
u8 pDMX_buf ;
//***********************************************************************
u8 TXDData[512]; //发送缓冲区512个数据
u8 RXDData[512]; //接收缓冲区512个数据
void DMX_init(void) //DMX512初始化
{
USART_TX_EN=1;
// int i;
TXDData[0] = 0; //起始码00
// for(i = 1; i<=512; i++)
// {
// TXDData[i] = 0;
// }
TXDData[1] = 0XFF;
TXDData[2] = 128;
TXDData[3] = 00;
TXDData[4] = 0;
TXDData[5] = 255;
TXDData[6] = 0;
GPIO_ResetBits(GPIOD,GPIO_Pin_8); //输出低电平
delay_us(92); //延时92us
GPIO_SetBits(GPIOD,GPIO_Pin_8); //输出高电平
delay_us(16); //延时15us
}
void DMX_SendPacket(void) //发送DMX512数据
{
pDMX_buf = 0;
USART_SendData1(USART3,TXDData[0]);
while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET ); //这里做缓冲区是否发送完判断
pDMX_buf ++;
for( pDMX_buf = 1; pDMX_buf<=6; pDMX_buf++)
{
USART_SendData(USART3,TXDData[pDMX_buf]);
while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET ); //这里做缓冲区是否发送完判断
}
}
复制代码
所有资料51hei提供下载:
dmx512控制程序.rar
(462.23 KB, 下载次数: 139)
2018-8-30 16:25 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
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