为啥stm32串口接受发送函数中定义的数据位uint16_t,但串口只能接受发送8位数据

2019-07-20 23:09发布

stm32串口接受发送函数中定义的数据位uint16_t,但串口只能接受发送8位数据,是不是说stm32串口接受发送函数能处理16位数据??????
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);
}


uint16_t USART_ReceiveData(USART_TypeDef* USARTx)
{
  /* Check the parameters */
  assert_param(IS_USART_ALL_PERIPH(USARTx));

  /* Receive Data */
  return (uint16_t)(USARTx->DR & (uint16_t)0x01FF);
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
civic7366
1楼-- · 2019-07-21 03:06
 精彩回答 2  元偷偷看……
xuande
2楼-- · 2019-07-21 06:32

也能接受32位,
但多余部分一律无视了。


012
3楼-- · 2019-07-21 12:24
xuande 发表于 2016-3-31 09:23
也能接受32位,
但多余部分一律无视了。

也能接受32位是什么意思??,不是没次只能收到8位数据吗??
civic7366
4楼-- · 2019-07-21 18:04
因為 USARTx->DR 是從USARTx_BASE後的0x04-0x07

只有前面9個bit有用

所以u16&0x01FF 取前面9個bit
xuande
5楼-- · 2019-07-21 19:05
 精彩回答 2  元偷偷看……
诺呵呵
6楼-- · 2019-07-22 00:10
本帖最后由 诺呵呵 于 2016-3-31 15:10 编辑

希望你的问题得到解决

一周热门 更多>