stm32串口发送数据的配置,以及通过串口发送结构体数组总是多一个00字节的问题 当然可以,请看下面的代码示例: 发送函数: “`c #include “stm32f103.h” void USART_SendArray(uint8_t* data, uint16_t length) { for (uint16_t i = 0; i < length; i++) { while (!(USART1->SR & USART_SR_TXE)); // 等待发送缓冲区为空 USART1->DR = data[i]; // 将数据写入发送寄存器 } } “` 接收函数: “`c #include “stm32f103.h” #define BUFFER_SIZE 100 void USART_ReceiveArray(uint8_t* buffer, uint16_t length) { uint16_t count = 0; while (count < length) { if (USART1->SR & USART_SR_RXNE) { // 接收缓冲区非空 buffer[count++] = USART1->DR; // 读取接收寄存器中的数据 } } } “` 请注意,以上代码示例假设你使用的是STM32F103系列的芯片,并且串口1用于通信。你可以根据实际情况进行调整。 使用这两个函数时,你需要提供一个数组作为参数,并指定要发送或接收的字节数。例如,要发送一个包含10个数字的数组,可以如下调用发送函数: “`c uint8_t sendData[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; uint16_t sendLength = sizeof(sendData) / sizeof(sendData[0]); USART_SendArray(sendData, sendLength); “` 接收函数的用法类似,你需要提供一个数组作为接收缓冲区,并指定要接收的字节数。例如,要接收10个字节的数据到一个名为receiveData的数组中,可以如下调用接收函数: “`c uint8_t receiveData[10]; uint16_t receiveLength = sizeof(receiveData) / sizeof(receiveData[0]); USART_ReceiveArray(receiveData, receiveLength); “` 这样,receiveData数组就会被填充上接收到的数据。 希望以上代码对你有帮助!如有其他问题,请随时提问。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/84414.html