void SYN_FrameInfo(u8 Music, u8 *HZdata) { /****************需要发送的文本**********************************/ unsigned char Frame_Info[50]; unsigned char HZ_Length; unsigned char ecc = 0; //定义校验字节 unsigned int i = 0; HZ_Length = strlen((char*)HZdata); //需要发送文本的长度 /*****************帧固定配置信息**************************************/ Frame_Info[0] = 0xFD ; //构造帧头FD Frame_Info[1] = 0x00 ; //构造数据区长度的高字节 Frame_Info[2] = HZ_Length + 3; //构造数据区长度的低字节 Frame_Info[3] = 0x01 ; //构造命令字:合成播放命令 Frame_Info[4] = 0x01 | Music << 4 ; //构造命令参数:背景音乐设定 /*******************校验码计算***************************************/ for(i = 0; i < 5; i++) //依次发送构造好的5个帧头字节 { ecc = ecc ^ (Frame_Info[i]); //对发送的字节进行异或校验 } for(i = 0; i < HZ_Length; i++) //依次发送待合成的文本数据 { ecc = ecc ^ (HZdata[i]); //对发送的字节进行异或校验 } /*******************发送帧信息***************************************/ memcpy(&Frame_Info[5], HZdata, HZ_Length); Frame_Info[5 + HZ_Length] = ecc; USART1_SendString(Frame_Info, 5 + HZ_Length + 1); }
时间: 2023-06-17 12:06:19 浏览: 231
ic_synthesis_based_ARM_labs.zip_Cortex M0_cortex_m*_synopsys_syn
5星 · 资源好评率100%
这段代码是用于发送语音合成的帧信息的函数。代码中定义了一个长度为50的字符数组Frame_Info,用于存储构造好的帧信息。HZ_Length存储需要发送文本的长度。Frame_Info的前5个字节是固定的帧头信息,包括帧头FD、数据区长度、命令字和命令参数。ecc是校验字节,用于对发送的字节进行异或校验。接下来的for循环逐个字节对帧头和文本数据进行异或校验。最后,将待合成的文本数据复制到Frame_Info数组中,并在最后一个字节添加上校验码ecc。最终,调用USART1_SendString函数将构造好的帧信息发送出去。
阅读全文