原子哥,STM32的串口发送函数USART_SendData()怎么发送一个结构体数据?

2019-08-17 01:16发布

原子哥,STM32的串口发送函数USART_SendData()怎么发送一个结构体数据?
USART_SendData函数如下:

void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)
{
  /* Check the parameters */
  assert_param(IS_USART_ALL_PERIPH(USARTx));
  assert_param(IS_USART_DATA(Data));

  /* Transmit Data */
  USARTx->DR = (Data & (uint16_t)0x01FF);
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
黄志豪 发表于 2017-7-12 16:40
首先len是不是结构体的长度要确定,因为虽然结构体里是u8但是有些编译器会针对32位机转成u32,那么len就变 ...

我改成这样,但还是打印不出来我想需要的内容:
typedef __packed struct{
    u8  num;
    u8 data[2];
}Temp;

Temp tem;

int main(void)
{
     u8  i,len;
     tem.num = 0x10;
     tem.data[0] = 0x50;
     tem.data[1] = 0x30;  
     delay_init();       
     uart_init(38400);                  
     while(1){
           len = sizeof(tem);
           i = 0;
           while(len--){
                i++;
               USART_SendData(USART1,(u8)&tem+i);
               while(USART_GetFlagStatus(USART1, USART_FLAG_TXE));
            }
                       
        delay_ms(1000);
        delay_ms(1000);                       
    }
}

一周热门 更多>