完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近做一个用STM32读SD卡中的BIN文件,每次读取512个数据然后通过串口发送DMX512数据,但DMX512数据时间只有23ms,若连续发送约为44帧数据,不会出现闪烁,但其中要边读SD卡数据边发送,就有个时间延时,DMX512 LED接收灯具闪烁,求助如何解决次问题!!如下为相关部分代码:
/****************************************** *函数功能:DMX_SendPacket *输入数据:无 * 返回值:无 *调用函数:DMX_SendPacket(); *作 者: *日 期:2015.1.15 ******************************************/ void DMX_SendPacket(u8 *DMX_buf) { // u8 i; // for(i=0;i<10;i++) // { u16 pDMX_buf=0; //配置为普通IO GPIO_Tx_Normal_Config(); //设置发送的引脚为普通IO GPIO_ResetBits(GPIOA,GPIO_Pin_2); //输出低电平 delay_us(150); //延时150us GPIO_SetBits(GPIOA,GPIO_Pin_2); //输出高电平 delay_us(13); //延时13us GPIO_Tx_Usart_Config(); //设置发送的引脚为串口 USART2->DR = 0x0100 | 0x00; //第0帧前导码,发送起始码 while((USART2->SR&0X40)==0); //循环发送,直到发送完毕 while(pDMX_buf < 512) //1-512 { while((USART2->SR&0X40)==0); //循环发送,直到发送完毕 if(USART2->SR & (1<<6)) { USART2->DR = 0x0100 | DMX_buf[pDMX_buf]; pDMX_buf++; } } // } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// void DMX512_Play_bin(unsigned char *pic_name) { int j; unsigned char tmp_name[20]; // WORD data; BYTE * pdata = pColorData; // BYTE * tmp_pdata; unsigned int read_num; sprintf((char*)tmp_name,"0:%s",pic_name); f_mount(0, &bmpfs[0]); bmpres = f_open( &bmpfsrc , (char *)tmp_name, FA_OPEN_EXIStiNG | FA_READ); if(bmpres == FR_OK) { // printf("Open file successrn"); } else { // printf("file open fail!rn"); return; } for(j=0;j<4000;j++) //300表示一幅图片含有300x512字节的信息 { f_lseek (&bmpfsrc,(512*j)); f_read(&bmpfsrc,pdata,512,&read_num); DMX_SendPacket(pdata); } f_close(&bmpfsrc); } /////////////////////////////////////////////////////////////////////////////////////// int main(void) { NVIC_Configuration(); RCC_Configuration(); GPIOA_Configuration(); DMX_init(); while(1) { DMX512_Play_bin("/美女2.bin"); } } |
|
相关推荐
6个回答
|
|
|
|
|
|
谢谢分享!!!!!!!!!!!
|
|
|
|
大神,,我也刚开始接触DMX这块,能不能一起讨论。
|
|
|
|
有谁做过DMX512项目的可以加qq:273131302联系
|
|
|
|
有谁做过DMX512项目的可以加qq:273131302联系
|
|
|
|
有谁做过DMX512项目的可以加qq:273131302联系
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
621 浏览 1 评论
1962 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1068 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1487 浏览 1 评论
LL库F030进行3个串口收发,2个串口为232,一个为485,长时间后,会出现串口1停止运行,另外两个正常,只有重启复原
1924 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 10:30 , Processed in 0.559452 second(s), Total 52, Slave 46 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号