问题
void Send_vofa(void){
u8 frameDataEnd[] = {0x00,0x00,0x80,0x7f};
u8 i=0;
u8 a=1,b=5,c=6,d=7;
u8 byte[4]={0};
Float_to_Byte((float)a,byte); DMA_USART_TX_Data(byte,4);
//delay_ms(100);
Float_to_Byte((float)b,byte); DMA_USART_TX_Data(byte,4);
//delay_ms(100);
Float_to_Byte((float)c,byte);DMA_USART_TX_Data(byte,4);
DMA_USART_TX_Data(frameDataEnd,4);
}
/* 将浮点数f转化为4个字节数据存放在byte[4]中*/
void Float_to_Byte(float f,unsigned char* byte)
{
FloatLongType fl;
fl.fdata=f;
byte[0]=(unsigned char)fl.ldata;
byte[1]=(unsigned char)(fl.ldata>>8);
byte[2]=(unsigned char)(fl.ldata>>16);
byte[3]=(unsigned char)(fl.ldata>>24);
}
三个通道,常数1 5 6,但是情况是
分析
- 波特率太高,从115200降至9600,情况不变;升至460800也没用
- 在数据发送之间加上延时,见第7行代码,发现有效,通道数据恢复正常
应该是DMA太快?有数据覆盖问题吧(个人认为)。
解决
- 多加两条通道数据就行,把自己要用的使显示出来
不定时更新。