中级会员
 
- 积分
- 409
- 金钱
- 409
- 注册时间
- 2012-10-24
- 在线时间
- 19 小时
|
这是发送带符号16位整型的数据,用中断方式发送:
void UART1_Put_Int16(uint16_t DataToSend)
{
USART1_TxBuffer[USART1_count++] = BYTE1(DataToSend);
USART1_TxBuffer[USART1_count++] = BYTE0(DataToSend);
USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
}
这是发送数据包的函数:
void Send_Pitch_Speed(void)
{
UART1_Put_Char(0XA5); //包头
UART1_Put_Int16((int16_t)Send_speed); //带负号的数字(数据)
UART1_Put_Int16((int16_t)Send_PitchAngle); //带负号的数字(数据)
UART1_Put_Char(0XAA); //包尾
}
int16_t rxbuf[2]; //接收数据包缓冲区
以下是接收方处理数据包的函数:
void Uart_Data_Package_Pro(void)
{
int16_t tmpch;
tmpch=USART_ReceiveData(USART1);
if(tmpch==0XAA) //如果是包尾
{
recstatu = 0;
packerflag = 1; //已经接收到一个完整的数据包
return ;
}
if(recstatu ==1) //判断是否处于接收数据状态
{
rxbuf[ccnt++] = tmpch; //把接收的数据放到一个数组
}
if(tmpch==0XA5) //如果是包头
{
recstatu = 1;
ccnt = 0 ;
packerflag = 0;
return ;
}
}
发现接收方收到的数据没有负号的值,只有正数,而且收到的最大数是255,我在发送方发送的数据最大值比255要大的,各位大侠发现哪里出问题了么?谢谢指教啊!
|
|