求助STM32 USART 通信问题

2019-07-21 08:26发布

STM32中 USART_SendData();函数为什么数据要是16位的,USART只能传输8位或9位数据,
我要和8位单片机通信,数据该如何处理
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);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
原味_郭
1楼-- · 2019-07-22 01:31
回复【7楼】正点原子:
---------------------------------
我用中断接受一组数据,在初始化就打开接受中断,并用DMA方式发送,为什么只发送一帧数据,USART接受是否还要专门清中断标志位
正点原子
2楼-- · 2019-07-22 02:46
回复【8楼】原味_郭:
---------------------------------
只要进中断了,就都应该清楚标志的.否则会重复进入.
原味_郭
3楼-- · 2019-07-22 03:47
回复【9楼】正点原子:
---------------------------------
可是手册中说单缓冲模式,只要读取DR寄存器就可以清楚RXNE位。
正点原子
4楼-- · 2019-07-22 08:49
 精彩回答 2  元偷偷看……
长昵称不被占用
5楼-- · 2019-07-22 10:18
正点原子 发表于 2012-6-12 11:36
回复【楼主位】原味_郭:
---------------------------------
因为没有9位数据的标准格式。
只有u8,u16,u3 ...

[mw_shl_code=c,true]void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)

u8 USART_RX_BUF[USART_REC_LEN];     //接收缓冲,最大USART_REC_LEN个字节.
//===================//
请问原子哥,要求参数uint16_t,我们传递的u8 USART_RX_BUF这是为什么??
//===============//
USART_RX_BUF[USART_RX_STA&0X3FFF]=Res;
这里u16 USART_RX_STA=0;       //接收状态标记          
请问这里定义的U8数组里面写U16参数为什么不报错,而且Res是把u8放入数组的??谢谢[/mw_shl_code]

一周热门 更多>