基础实验:
STM32基础知识点:(引用网络资料或自己总结)
1.初识STM32固件库(点击进入笔记)
2.STM32空工程创建(点击进入笔记)
2.1串口示波器协议分析:
官方套件串口1和串口3原理图:
--串口1用来调试发送数据用的,及Datascope所用串口
--串口3用来在调试完成后,通过蓝牙发送控制信息
先来分析专门发送数据的串口是怎么实现的吧!
上位机提供的帧格式:(由于发送数据协议要求不高,就不需要帧类型--数据校验位了)
实现发送步骤(用农产品包装类比):看不清的话,右键点击查看图片
void Float2Byte(float *target,unsigned char *buf,unsigned char beg)
void DataScope_Get_Channel_Data(float Data,unsigned char Channel)
unsigned char DataScope_Data_Generate(unsigned char Channel_Number)
while(1)
{
DataScope_Get_Channel_Data( 1.0 , 1 ); //将数据 1.0 写入通道 1
DataScope_Get_Channel_Data( 2.0 , 2 ); //将数据 2.0 写入通道 2
DataScope_Get_Channel_Data( 3.0 , 3 ); //将数据 3.0 写入通道 3
DataScope_Get_Channel_Data( 4.0 , 4 ); //将数据 4.0 写入通道 4
DataScope_Get_Channel_Data( 5.0 , 5 ); //将数据 5.0 写入通道 5
DataScope_Get_Channel_Data( 6.0 , 6 ); //将数据 6.0 写入通道 6
DataScope_Get_Channel_Data( 7.0 , 7 ); //将数据 7.0 写入通道 7
DataScope_Get_Channel_Data( 8.0 , 8 ); //将数据 8.0 写入通道 8
DataScope_Get_Channel_Data( 9.0 , 9 ); //将数据 9.0 写入通道 9
DataScope_Get_Channel_Data( 10.0 , 10); //将数据 10.0 写入通道 10
Send_Count = DataScope_Data_Generate(10); //生成10个通道的 格式化帧数据,返回帧数据长度
for( i = 0 ; i < Send_Count; i++) //循环发送,直到发送完毕 { while((USART1->SR&0X40)==0);
USART1->DR = DataScope_OutPut_Buffer[i]; //从串口丢一个字节数据出去
}
delay_ms(50); //20fps, 帧间隔时间。 不同电脑配置及 USB-TTL 设备的优劣均会影响此时间的长短,建议实测为准。
}
特别注意:
现场协议传输浮点数的时候,-12.5 (0xC1480000),传输的时候要按照00 00 48 C1的顺序传输,要不PC端将无法得到正确数据。