让“串口通信简单实例-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
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
正点原子
1楼-- · 2019-07-21 01:02
 精彩回答 2  元偷偷看……
beary
2楼-- · 2019-07-21 02:13
 精彩回答 2  元偷偷看……
beary
3楼-- · 2019-07-21 04:41
发帖时拷过来的字,太暗,抱歉,重新在2楼发了一遍。

请问我的问题出在哪里?或者说有什么其它解决方法?
龙之谷
4楼-- · 2019-07-21 07:48
仔细学习一下对应例程,编程不要想当然
beary
5楼-- · 2019-07-21 10:42
 精彩回答 2  元偷偷看……
DayDayUp
6楼-- · 2019-07-21 12:22
USART数据字可编程长度为8位或9位

一周热门 更多>