dmx512协议的编程c语言,我在此分享一份DMX512协议的发送程序,希望对做灯光控制的人有一定的帮助(我测试过了跟DMX512控制台发出的方波是一样一样的)...
/************************************************************
*函数名称:void uart2_init(u32 bound)
*功 能:串口2初始化函数
*说 明:初始化IO 串口2
*输入参数:bound:波特率
*输出参数:无
*************************************************************/
void uart2_init(u32 bound) //串口2初始化函数
{
//GPIO端口设置
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE); //使能USART2
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,ENABLE); //使能引脚复用,GPIOA时钟
USART_DeInit(USART2); //复位串口2
//USART2_TX PA.2
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PA.2
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA2
//USART2_RX PA.3
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //PA3
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA3
//Usart2 NVIC 配置
NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1; //抢占优先级2
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //子优先级3
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能
NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器
//USART 初始化设置
USART_InitStructure.USART_BaudRate = bound; //一般设置为9600;
USART_InitStructure.USART_WordLength = USART_WordLength_9b; //字长为8位数据格式
USART_InitStructure.USART_StopBits = USART_StopBits_1; //一个停止位
USART_InitStructure.USART_Parity = USART_Parity_No; //无奇偶校验位
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收发模式
USART_Init(USART2, &USART_InitStructure); //初始化串口2
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//开启接收中断 //接收个数清零
USART_Cmd(USART2, ENABLE); //使能串口2
}
/************************************************************
*函数名称:void USART2_IRQHandler(void)
*功 能:串口中断函数
*说 明:串口2中断服务程序
*************************************************************/
void USART2_IRQHandler(void) //串口2中断服务程序
{
static u16 UDR=0;
static u16 RXB8=0;
static uint16_t pDMX_buf = 0; //数据指针
static uint8_t fDMX_buf_right = 0;
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)//USART_FLAG_RXNE
{
IWDG_ReloadCounter(); //喂狗
UDR = USART_ReceiveData(USART2); //16bit 0-8 9bit
RXB8 = (UDR&0x0100); //得到第9位数据
if(RXB8 == 0) //如果是复位信号
{
if(!UDR) //如果数据为0
{
fDMX_buf_right = 1; //接收数据正确
pDMX_buf = 0; //直接接收第一个数据,不保存第0个数据
}
}
else //rxb8=1 pDMX_buf =1 调光数据
{
if(1 == fDMX_buf_right)
{
RXDData[pDMX_buf++] = (u8)UDR; //得到8位的数据
//接收到0-192个数据
if(pDMX_buf > 20)
{
fDMX_buf_right = 0;
DMXSignalFlag = 1; //更新调光数据
}
}
}
}
//--------------------------------接收中断---------------------------------------------
if(USART_GetITStatus(USART2, USART_IT_TXE) != RESET)
{
// Disable the USART2 Transmit interrupt
USART_ITConfig(USART2, USART_IT_TXE, DISABLE); //清中断 要不然一直执行此中断 OK
}
}
dmx512协议的编程c语言,我在此分享一份DMX512协议的发送程序,希望对做灯光控制的人有一定的帮助(我测试过了跟DMX512控制台发出的方波是一样一样的)...相关推荐
- 什么是编程?程序员主要做啥工作?如何学习呢?
对编程的理解 编程换成通俗的语言可以理解为使用一些英文单词组成的指令发送给计算机,做指定的事情. 编程的种类 如今在互联网市场中,编程的工作一共分为了3大类: 前端编程 后台编程 运维编程 前端编程: ...
- 三、PHP基础——HTTP协议 文件编程
一.HTTP协议初步认识 HTTP协议概念 HTTP协议,即超文本传输协议(Hypertext transfer protocol).是一种详细规定了浏览器和万维网(WWW = World Wide ...
- 江南大学C语言大作业,TCPIP大作业基于TCP的网络通信编程C语言版(江南大学).doc...
TCPIP大作业基于TCP的网络通信编程C语言版(江南大学).doc TCP/IP协议编程大作业 课题名称 基于TCP的网络通信 专 业 计算机科学与技术 班 级 计算机1206 学 号 103041 ...
- 用十种编程需语言说新年快乐_整理新年手机和PC的10种方法
用十种编程需语言说新年快乐 Organize your phone, tablet, and computer with these quick and easy tips. 通过这些快速简便的技巧来 ...
- dmx计算机,DMX512协议是什么 DMX512数字灯光控制系统介绍
引言 基于DMX512控制协议进行调光控制的灯光系统叫做数字灯光系统.目前,包括电脑灯在内的各种舞台效果灯.调光控制器.控制台.换色器.电动吊杆等各种舞台灯光设备,以其对DMX512协议的全面支持,已 ...
- 高性能网络编程总结及《TCP/IP Sockets编程(C语言实现) (第2版)》 代码下载(链接以及文件打包)
http://blog.csdn.net/column/details/high-perf-network.html http://blog.csdn.net/russell_tao/article/ ...
- c语言winpcap编程,c语言Winpcap编程结构并接收解析arp包
c语言Winpcap编程构造并接收解析arp包 /* 程序功能: 1.构造arp包,并发送.程序参数顺序:源IP.目的IP.mac地址.flag 2.获取网络中的ARP数据包,解析数据包的内容.程序参 ...
- UNIX环境编程(c语言)--套接字--基本TCP套接字编程
目录 准备知识 字节序 字节序转换函数 字节操纵函数 地址转换函数 地址结构 基本TCP套接字编程 概要 socket函数 bind函数 listen函数 accept函数 connect函数 通信函 ...
- MODBUS通讯协议及编程【一】
一.Modbus 协议简介 Modbus 协议是应用于电子控制器上的一种通用语言.通过此协议,控制器相互之间.控制器经由网络(例如以太网)和其它设备之间可以通信.它已经成为一通用工业标准.有了它, ...
- [转]终于有人说出来了——Java不适合于作为主要编程教学语言
CSDN首页推荐了一篇文章,说两位退休的美国大学教授上书反对将Java作为编程教学语言,对此我表示高度认同.对于Java,我并不反感,而且相信它在工业应用中的地位不可取代,但是,我一直反对将Java作 ...
最新文章
- linux mysql 编码修改,Linux下修改MySQL编码的方法
- Web 标准实践系列(一)——Google 的首页
- 中国联通SDN/NFV的思考与实践
- 安川g7接线端子图_ABB、KUKA、FANUC、安川四大家族机器人安全回路小结
- 『数学』你确定你学会了勾股弦定理!真的吗?看完这个篇文章再回答我!
- WPF 基础控件之 GroupBox样式
- html文本框整数范围,验证HTML表单文本框中的数值范围。 PHP或Javascript
- 联信高效的数据传输机制
- UIViewContentMode-
- solid 铝型材框架_solidworks铝型材库
- 网店如何提高顾客的回购率?
- R语言基础 训练营公告
- 如何找出 Mac 上两个文档之间的差异?
- “红孩儿”成中科院博士!做CTO身价过亿!
- wpa_supplicant配置
- KDiff3 merge conflict 窗口操作说明
- 麒麟信安总裁刘文清:携手 openEuler,共推操作系统产业新发展
- 解决VMware下Win10主机和win7虚拟机实现文件共享问题
- scrapy IP代理池 scrapyd spiderkeeper docker flask uwsgi nginx
- 基于python的智能文本分析 书_推荐一本Python数据分析必备工具书