1. 我手里有款激光传感器,需要STM32接收传感器数据。通过STM32给传感器发送指定命令后,激光传感器返回数据协议如下:
起始帧以十六进制:0XA5,0X5A,0X05,0X00,0X00,0X40,0X81共7个字节作为数据其实判断。之后不断传回5个字节一个数据包的有用信息。
2.为此,我通过串口2给传感器发送命令,并通过串口2中断接收传感器数据,并通过串口1与电脑通讯以判断数据正确性。首先采用串口2收一次就立即发送给串口1方式,在串口调试助手里能有效显示数据信息,代码和接受如下所示:
/*main函数如下所示*/
int main(void)
{
SystemInit();
delay_init(72);
uart_init(115200);
NVIC_Configuration();
while(1)
{
RpCmd(RPLIDAR_CMD_FORCE_SCAN);//发送命令
delay_ms(1000);
for(m;m<128;m++)
{printf("Buf[%d",m);
printf("]=%02hhx
",USART2_RX_BUF[m]);
}
/***串口2中断函数如下:***/
void USART2_IRQHandler(void) {
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //????????
{
USART_ClearITPendingBit(USART2,USART_IT_RXNE);
Res2 =USART_ReceiveData(USART2);//
USART_SendData(USART1,Res2);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){}
}
最终能正确输出结果:
一周热门 更多>