使用DMA发送数据帧的时候,如何将USART_DR中的第8bit置1

2019-12-20 21:38发布

在使用DMA发送数据帧的时候USART_DR寄存器的第8bit位想发送的时候一直为高电平,不知如何实现
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
xwkm
1楼-- · 2019-12-22 08:36
穿越时空 发表于 2018-3-22 15:24
我现在就是2个停止位,我还想让DR寄存器的bit8为高电平

这是一回事。8N2=9N1,第9位永远为1
lingdianhao
2楼-- · 2019-12-22 11:52
我想楼主要做的是串口数据格式1个起始位,8个数据位,1个校验位,2个停止位。
而且校验位是固定的MARK或SPACE校验,选9个数据位,无校验,2个停止位,如果你用中断或查询的方式可以往DR送值得时候加0x80,DR是16位的。
如果你用DMA的话,传送就直接传16位的,
如果你不想用16位的,只想用8位的缓存,你可以先将DR bit8,置1,然后再启动DMA,不知道DMA传送8位会不会覆盖掉第9位的值,可以测试下。
穿越时空
3楼-- · 2019-12-22 13:43
 精彩回答 2  元偷偷看……
穿越时空
4楼-- · 2019-12-22 14:05
xwkm 发表于 2018-3-23 11:45
这是一回事。8N2=9N1,第9位永远为1

我用9位数据,2个停止位
xuxueliang
5楼-- · 2019-12-22 14:56
16bit不需要纠结,会多用RAM也不是什么大不了的事
xuxueliang
6楼-- · 2019-12-22 19:16
实在不够用,要不就换方案,中断发送。DMA是挺好,但是系统方案不是谁好就非得用谁,要全盘考虑

一周热门 更多>