STM32 IO口模拟串口

2019-07-21 03:00发布

  最近项目中STM32的串口资源紧张,于是使用IO口进行模拟串口,参考http://ziye334.blog.163.com/blog/static/2243061912014,使用原子哥的Mini STM32 V3.2开发板进行实验。IO口模拟串口的思路也比较简单,一切按照串口协议进行操作即可。对于发送,计算好不同波特率对应的延时时间进行数据发送即可。对于接收,稍微复杂。通过外部中断检测接收管脚的下降沿,检测到起始信号后开启定时器,定时器按照波特率设定好时间,每隔一段时间进入定时器中断接收数据,完成一个字节后关闭定时器。
  测试Demo说明:
   * TXD : PC13
   * RXD : PB14
   * 波特率:9600 ,1-8-N
   *Demo功能: 接收11个数据,然后把接收到的数据发送出去。


   SoftWareSerial.zip (310.61 KB, 下载次数: 1051) 2016-6-2 15:11 上传 点击文件名下载附件






友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
xuande
1楼-- · 2019-07-21 08:43

这实验有助于理解串口通信的本质。


sunboyYB
2楼-- · 2019-07-21 13:29
 精彩回答 2  元偷偷看……
临窗望雪
3楼-- · 2019-07-21 16:59
 精彩回答 2  元偷偷看……
临窗望雪
4楼-- · 2019-07-21 22:09
临窗望雪 发表于 2016-10-14 19:30
if(OI_RXD)
                {
                        recvData |= (1

我理解了:
PORTA = (1《7)

给整个PORTA赋值,作用等价于PORTA = 0x80,将1000 0000这个数赋予PORTA,将指
定的第7位置1,其余各位置0。只不过这里包括了两个步骤,即先是括号中的1《7操作,
表示将0x01这个数左移7位,其值变成0x80,再将它赋予PORTA。
西点
5楼-- · 2019-07-22 03:25
正好需要这玩意来调试调试
cxs0913
6楼-- · 2019-07-22 03:34

一周热门 更多>