数据发送子程序为:
2.2 数据接收
接收数据一般采用软件轮询的方式实现。数据接收子程序为:
2.3 定时器设置
定时器中断频率由TDDR(定时器divide-down寄存器,定时计数寄存器TIM的低4位)和定时周期寄存器PRD共同确定。当两者都为0时,定时器中断频率为(CLKOUT1rate)/2;两者不全为0时,由如下公式确定:
举例:为了实现9 600 bps的有效传输速率,实际传输速率(额外增加1位起始位、1位校验位、1位停止位)应该为:
9 600 bps÷8×(8+1+1+1)=13 200 bps
故在晶振频率为20 MHz的条件下,PRD=20×106/13200-1=1514。
此时,将PRD设置为1514,每两次定时器中断的时间间隔即为1位数据的保持时问。一般来说,读取的时机靠近位宽的中间位置,读取的数据比较可靠和稳定,如图2所示。
3 软件改进
图2中,如果读取的起始位的位置正好处在起始位的开始,此时就会出现将起始位的末尾误判为第1位;或者读取的起始位的位置处在起始位的末尾,将可能丢失数据的第1位,都会导致读取数据出错,如图3所示。