usart的dma實現是不是有問題?

比如說,我設置


??USART_InitStructure.USART_WordLength?=?USART_WordLength_9b;
??USART_InitStructure.USART_StopBits?=?USART_StopBits_1;
??USART_InitStructure.USART_Parity?=?USART_Parity_No;

因為已經大于uint8了,所以我給dma的buff應該是uint16才對,不然怎么獲取他的第九位。

??DMA_InitStructure.DMA_PeripheralDataSize?=?DMA_PeripheralDataSize_HalfWord;
??DMA_InitStructure.DMA_MemoryDataSize?=?DMA_PeripheralDataSize_HalfWord;


但是讀取數據的時候,卻把第九位扔了。只傳uint8

您好,關于串口數據長度配置成9位,是8位的數據位+1位的校驗位,通常用于串口的奇偶校驗,因此數據位的寬度還是8位,第9位為奇偶校驗位,由硬件處理完成,因此DMA的數據寬度還是配置成8位即可。后續(xù)若有問題,可通過郵箱(lzs@wch.cn)和我溝通


image.png

這個又該如何解釋,9個數據位,如果包含檢驗位,那實際數據位只有8位。8個數據位,如果包含檢驗位,實際數據位只有7位,這個確定是這樣的嗎?校驗位應該單獨算的吧?


您好,當使用奇偶校驗的時候,數據位只能配置為9位,不能配置為8位


您好,


????????如果需要使用奇偶檢驗,需要講串口配置為9位數據位;如果需要使用DMA每次傳輸9位數據,需要使用半字進行搬運,數據類型應配置為16位


image.png


image.png


image.png





只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频