让“串口通信简单实例-M4”中的函数 USART_SendData 一次能发送32位数

2019-07-20 22:09发布

“串口通信简单实例-M4”中的发送数据函数  USART_SendData  一次只能发送8位
我想通过修改函数让它能一次发送32位数,比如  USART_SendData(USART1,0x12345678)能直接把这个32位数发出来,
做出修改如下:

原函数代码:
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);

现函数代码:
void USART_SendData(USART_TypeDef* USARTx, uint32_t Data)
{
  assert_param(IS_USART_ALL_PERIPH(USARTx));
  //assert_param(IS_USART_DATA(Data));

  USARTx->DR = (( Data & (uint32_t)0xff000000 ) >>24);
  USARTx->DR = (( Data & (uint32_t)0xff0000 ) >>16);
  USARTx->DR = (( Data & (uint32_t)0xff00 ) >>8);
  USARTx->DR = ( Data & (uint32_t)0xff ) ;

}
(注:也尝试过简单将原本代码最后一行换成  USARTx->DR = Data ;,但没有卵用)


结果都无法实现目的,无论怎么改,最后都是发送8位,用调试助手检测到的就是16进制的 78
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。