void stm32_send(float data1,float data2) { data tmp; char* tp=(char*)&tmp; u8 num=0; tmp.none1=0XAA; tmp.data1=data1; tmp.data2=data2; tmp.none2=0XFE; while(num<sizeof(data)) { USART_SendData(USART2,*(tp+num)); while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET); // USART_SendData(USART1,*(tp+num)); // while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); num++; } }
时间: 2024-04-18 21:26:15 浏览: 78
STM32库函数void USART_SendData()的缺陷和解决方法
这是一个发送数据的函数,函数名为 stm32_send接受两个 float 类型的参数 data1 和 data2。函数内部定义了一个结构体变量 tmp,用于存储发送的数据。将 data1 和 data2 分别赋值给 tmp 的 data1 和 data2 成员。同时,设置 tmp 的 none1 和 none2 成员为固定的值。然后通过串口发送数据。
具体的实现过程是将 tmp 的内存地址强制转换为 char* 类型的指针 tp,然后通过循环将 tp 指针指向的数据逐个发送出去。在发送数据时,使用 USART_SendData 函数将数据写入 USART2 寄存器,并通过 USART_GetFlagStatus 函数等待发送完成。循环结束后,数据发送完毕。
需要注意的是,这段代码中还有一部分被注释掉的代码,可能是用于调试或其他目的。
阅读全文