lezjin 发表于 2024-5-25 16:53:42

STC8H 试验箱串口2和串口3通讯请教。

查看提供的例子中,串口2 和串口3的读数据分别存在对应的缓存数组
main函数中串口3发送一个字符串,收到的用串口2输出。

想了半天串口3发送的数据存在哪了?怎么串口2的缓存数组可以输出?
是不是可以理解为,串口3发送的数据,串口2 和串口3在中断函数中,两个缓存数组里边都存有!

神农鼎 发表于 2024-5-25 19:08:39

深圳国芯人工智能有限公司-实验箱 (stcai.com)




用 USB直接仿真,STC8H8K64U,
看串口2/串口3如何通信的

51 如何仿真,STC8H8K64U自带硬件USB直接仿真,视频讲解回放 - 仿真/编译器/头文件 国芯技术交流网站 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)




跳线要短接

也可从这拿程序去修改

STC8系列4组串口同时通信的程序,Modbus 演示程序;可共享T2做波特率发生器 - 串行口,DMA支持的4组串口,RS232,RS485 国芯技术交流网站 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)




_奶咖君_ 发表于 2024-5-25 17:12:25

串口3发送的字符串在flash里。。。

_奶咖君_ 发表于 2024-5-25 17:13:23

2.串口2的缓冲区为啥不能输出。。。程序里的需求不就是接收的什么原样返回么?

soma 发表于 2024-5-25 17:55:12

串口都有相对应的缓存区,如S2BUF,把缓存发送到其他串口不就可以转发了

lezjin 发表于 2024-5-25 18:50:38

本帖最后由 lezjin 于 2024-5-25 18:56 编辑

_奶咖君_ 发表于 2024-5-25 17:12
串口3发送的字符串在flash里。。。
我的意思是发送到哪里了?这个字符串是不是同时发送到串口2 和串口3的缓存,这样才能解释串口2 的缓存里边有形同的数据

lezjin 发表于 2024-5-25 18:51:35

_奶咖君_ 发表于 2024-5-25 17:13
2.串口2的缓冲区为啥不能输出。。。程序里的需求不就是接收的什么原样返回么? ...

对的,意思是串口2、3 的缓存都接收到了相同的字符串是吧。

lezjin 发表于 2024-5-25 18:55:25

本帖最后由 lezjin 于 2024-5-25 18:56 编辑

soma 发表于 2024-5-25 17:55
串口都有相对应的缓存区,如S2BUF,把缓存发送到其他串口不就可以转发了
我开始也是这么理解的,找了半天S3BUF 到S2BUF的代码,并没有找到,
如图片中的两个中断函数和主函数,没有这方面的代码

lezjin 发表于 2024-5-26 18:34:24

attach://45280.wmv
今天试了一下仿真,
都是卡在串口2发送忙标志位,
中断函数中清零仿真跳不进去,
设置断点全速运行,也无法跳进去,
这个有办法解决吗

乘风飞扬 发表于 2024-5-27 09:57:04

lezjin 发表于 2024-5-26 18:34
今天试了一下仿真,
都是卡在串口2发送忙标志位,
中断函数中清零仿真跳不进去,

你用的是软件模拟仿真,跟硬件没有关联,产生不了硬件中断,所以你会卡在发送函数里面。
软件模拟仿真最明显的现象是执行过的代码左侧变成绿色。
硬件仿真操作步骤可参考以下演示视频:
https://www.stcaimcu.com/plugin. ... e_7ree=1&id_7ree=63

例程串口3每秒钟发送一串固定数据:PrintString3("STC8H8K64U UART3-UART2 Test Programme!\r\n");//UART3发送一个字符串
实验箱硬件上将串口2与串口3连接,这样串口3发送数据就会被串口2接收,在串口2中断里面将收到的数据存入RX2_Buffer缓冲区里面。然后在主循环里面打印RX2_Buffer的内容,就可以将从串口3收到的数据打印出来。
页: [1] 2 3
查看完整版本: STC8H 试验箱串口2和串口3通讯请教。