日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dmx512协议的编程c语言,我在此分享一份DMX512协议的发送程序,希望对做灯光控制的人有一定的帮助(我测试过了跟DMX512控制台发出的方波是一样一样的)...

發布時間:2023/12/14 编程问答 45 豆豆

/************************************************************

*函數名稱: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控制台发出的方波是一样一样的)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。