我使用的是STM32微控制器,通过一个USB接口接收数据。我想将接收到的数据转换为Mesaj结构,以便进一步处理。目前,我正在将数据收集到一个缓冲区(RxBuffer)中,我想知道如何将这些数据转换为“Mesaj”结构。下面是代码的一部分:
#define RxBufferSize 50
uint8_t RxBuffer[RxBufferSize];
typedef struct {
uint8_t baslangic;
uint16_t emirNo;
uint8_t birimNo;
uint32_t emirAdresi;
uint8_t komut;
uint8_t dataTipi;
uint32_t data;
uint8_t bitis;
} Mesaj;
- 我在下面的代码片段中接收到RxBuffer,我想处理它,但首先,我想在检查RxBuffer的大小后将其转换为结构体。
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
if (huart->Instance == USART1)
{
HAL_UARTEx_ReceiveToIdle_DMA(&huart1, RxBuffer, RxBufferSize);
__HAL_DMA_DISABLE_IT(&hdma_usart1_rx, DMA_IT_HT);
for (int i = Size; i < RxBufferSize; i++)
{
RxBuffer[i] = 0;
}
if (Size == 15)
{
}
else
{
}
}
}
任何帮助都是感激不尽的。谢谢你,谢谢!
1条答案
按热度按时间cpjpxq1n1#
使用
memcpy
:请记住,的格式必须与结构体相同(填充,endianess等)。
如果输入流没有填充,则打包结构: