以前都没用过奇偶校验,今天用了一下,发现问题了。
摘自手册中的一段:
偶校验:校验位使得一帧中的7或8个LSB数据以及校验位中’1’的个数为偶数。
例如:数据=00110101,有4个’1’,如果选择偶校验(在USART_CR1中的PS=0),校验位将
是’0’。
奇校验:此校验位使得一帧中的7或8个LSB数据以及校验位中’1’的个数为奇数。
例如:数据=00110101,有4个’1’,如果选择奇校验(在USART_CR1中的PS=1),校验位将
是’1’。
传输模式:如果USART_CR1的PCE位被置位,写进数据寄存器的数据的MSB位被校验位替换
后发送出去(如果选择偶校验偶数个’1’,如果选择奇校验奇数个’1’)。如果奇偶校验失败,
USART_SR寄存器中的PE标志被置’1’,并且如果USART_CR1寄存器的PEIE在被预先设置的
话,中断产生。
注意红 {MOD}部分,虽然括号里的不太明白什么意思,不过按照前面说的,数据的MSB被校验位替换了,那发出去的数据不就错了?
实际用串口助手测试,STM32串口启用奇校验,串口助手也打开奇校验,STM32向串口发送“AT”结果串口助手接收窗口显示“刘”(不包括引号)。不知各位怎么看?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
回复【2楼】xijiele:
---------------------------------
怎么回事?我也不太明白这里
---------------------------------
是的.但我只用过8位的数据.我现在都不知道7位的数据是用在哪里.
一周热门 更多>