stm32串口通讯
来源:互联网 发布:厚积落叶听雨声知乎 编辑:程序博客网 时间:2024/05/19 22:03
这两天在看stm32的串口通讯,其实很简单,但是头疼了很久。因为一个问题没有搞清楚,stm32的奇偶校验位问题。
先看看奇偶检验的意思:
串口通信中数据的奇偶校验位算法
奇偶校验位是一个表示给定位数的二进制数中 1 的个数是奇数还是偶数的二进制数。奇偶校验位是最简单的错误检测码。奇偶校验位有两种类型:偶校验位与奇校验位。如果一组给定数据位中 1 的个数是奇数,那么偶校验位就置为 1,从而使得总的 1 的个数是偶数。如果给定一组数据位中 1 的个数是偶数,那么奇校验位就置为 1,使得总的 1 的个数是奇数。偶校验实际上是循环冗余校验的一个特例,通过多项式 x + 1 得到 1 位 CRC
对数据传输正确性的一种校验方法。在数据传输前附加一位奇校验位,用来表示传输的数据中"1"的个数是奇数还是偶数,为奇数时,校验位置为"0",否则置为"1",用以保持数据的奇偶性不变。例如,需要传输"11001110",数据中含5个"1",所以其奇校验位为"0",同时把"110011100"传输给接收方,接收方收到数据后再一次计算奇偶性,"110011100"中仍然含有5个"1",所以接收方计算出的奇校验位还是"0",与发送方一致,表示在此次传输过程中未发生错误。
大家一定会问,如何计算奇偶性呢,在计算机内有一种特殊的运算它遵守下面的规则:
1+1=0; 1+0=1; 0+1=1; 0+0=0;我们把传送过来的1100111000逐位相加就会得到一个1,应该注意的的,如果在传送中1100111000变成为0000111000,通过上面的运算也将得到1,接收方就会认为传送的数据是正确的,这个判断正确与否的过程称为校验。而使用上面方法进行的校验称为奇校验,奇校验只能判断传送数据中奇数个数据从0变为1或从1变为0的情况,对于传送中偶数个数据发生错误,它就无能为力了。
stm32中串口的位数是包含了奇偶校验位的。如果9位,则是8位数据位,一位校验位。电脑端可以设置8位数据位,一位相应的校验位。但是如果设置stm32为8位数据,这样其实只传了7位数据位,电脑端要设置为7位数据位。否则,传过来的数据是乱码。
2013.5.29
今天写一个串口程序,一直不停地进入中断,发现是因为启动了USART_IT_TXE中断,只要寄存器为空,就会触发,进入中断。中断发送接收的时候只要使用USART_IT_TC就可以了。
- STM32 串口通讯
- STM32串口通讯
- stm32串口通讯
- STM32串口通讯基本知识
- STM32串口通讯
- STM32串口USART通讯
- STM32串口USART通讯
- STM32 串口通讯 发送 接收
- STM32开发板入门教程 - 串口通讯 UART
- STM32调试大法 之 串口通讯
- STM32 IO口模拟串口通讯
- STM32 学习五 串口通讯1 74LS164学习
- stm32学习笔记(三)串口通讯实验
- 串口通讯
- 串口通讯
- 串口通讯
- 串口通讯
- 串口通讯
- 显示鼠标坐标
- 今天被别人问了几个问题
- yield
- 多核时代的移动开发(一)-函数式编程思想到来
- 【OpenStack】OpenStack网络知识片断
- stm32串口通讯
- java实用的jps命令
- bcdedit /create /d "Ubuntu" /application bootsector
- 手把手教你把Vim改装成一个IDE编程环境(图文)
- js利用apply(), Math object, js数组,对象完全智能验证
- 图片滚动链接
- 元旦春节将严查大型电商虚假促销
- Visual Studio 2012 Update 1 离线升级包(相当于VS2012 SP1离线补丁包)
- 图片随意拖动