没有合适的资源?快使用搜索试试~ 我知道了~
基于双缓冲的DMX512协议 DMX512 DMX512 DMX512 DMX512 DMX512 DMX512
资源推荐
资源详情
资源评论
//TX_STUDIO
//Dri_DMX512.h
#ifndef __DRI_DMX512_H
#define __DRI_DMX512_H
#define DMX_BUF_NUM (2U)
#define DMX_BUF_SIZE (20U)
#define TEST_NUM (80U)
#define MAX_REC_NUM (512U)
#define SELF_SC (0XAA)
typedef enum
{
WAIT_DMX_BREAK,
REC_DMX_SC,
REC_DMX_SLOTS,
}DMX512_State;
typedef struct
{
u32 break_flag; //收到 BREAK 的标志
u16 stability_flag; //信号稳定标志
u16 test_num; //信号稳定性检测记录
u16 old_slots_num; //上次接收到的数据
u16 new_slots_num; //这次收到的数据
u16 addr; //接收开始地址
u16 channels; //接收通道数
}sDMX512_Signal;
#endif
//Dri_DMX512.c
#include “Dri_DMX512.h”
u8 SBF=0,Rec=0;
sDMX512_Signal DMX_Singnal;
DMX512_State DMX_State=WAIT_DMX_BREAK;
u8 RxBuf[DMX_BUF_NUM][DMX_BUF_SIZE];
void USART1_IRQHandler (void)
{
static u8 Rec_Data=0;
if(USART_GetITStatus(USART1,USART_IT_FE)!=RESET) //break
{
Rec_Data =USART_ReceiveData(USART1);
if(0==Rec_Data)
{
DMX_Singnal.stability_flag=1;
DMX_Singnal.test_num=TEST_NUM;
DMX_Singnal.break_flag=1;
SBF=Rec;
Rec=!Rec;
DMX_Singnal.old_slots_num=DMX_Singnal.new_slots_num;
DMX_Singnal.new_slots_num=0;
DMX_State=REC_DMX_SC;
}
else
{
DMX_State=WAIT_DMX_BREAK; //等待 break
DMX_Singnal.new_slots_num=0;
}
}
else //slots
资源评论
motou
- 粉丝: 16
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功