找回密码
 立即注册
查看: 1452|回复: 12

关于STC32G8K串口3的超时功能的问题。

[复制链接]

2

主题

8

回帖

48

积分

新手上路

积分
48
发表于 2023-6-13 10:41:52 | 显示全部楼层 |阅读模式
本帖最后由 MaDaHua 于 2023-6-13 10:56 编辑

通讯程序是正常的。加入接收超时功能,超时功能没起作用。 求助一下,我程序问题出在哪?
1.png

这里我是按照手册的寄存器,一个一个写的。 但总觉得少个启动超时计数器。不知道我的想法对不对。

下面是中断函数
2.png

回复

使用道具 举报 送花

2

主题

8

回帖

48

积分

新手上路

积分
48
发表于 2023-6-13 10:46:25 | 显示全部楼层
是没进中断 红圈那部分那部分程序。
回复 支持 反对

使用道具 举报 送花

2

主题

8

回帖

48

积分

新手上路

积分
48
发表于 2023-6-13 11:38:03 | 显示全部楼层
刚才试了,在程序中把  UR3TOSR |= 0x01;  可以进入中断(红圈那部分)。  
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6841

积分

论坛元老

积分
6841
发表于 2023-6-13 19:08:21 | 显示全部楼层
MaDa*** 发表于 2023-6-13 11:38
刚才试了,在程序中把  UR3TOSR |= 0x01;  可以进入中断(红圈那部分)。

红圈里的 EAXRAM 建议删掉,扩展寄存器访问使能可以一直开着(初始化时打开,之后都不要再关闭了)
这里被你关闭了,那么进一次中断后,其它地方的扩展寄存器读写之前就必需重新开启,否则就不能正常访问。
回复 支持 反对

使用道具 举报 送花

2

主题

8

回帖

48

积分

新手上路

积分
48
发表于 2023-6-13 21:21:43 | 显示全部楼层
乘风*** 发表于 2023-6-13 19:08
红圈里的 EAXRAM 建议删掉,扩展寄存器访问使能可以一直开着(初始化时打开,之后都不要再关闭了)
这里 ...

你好,我一般是开--  使用--关闭。 ,这个过程。如下
3.png

回复 支持 反对

使用道具 举报 送花

2

主题

8

回帖

48

积分

新手上路

积分
48
发表于 2023-6-13 21:22:47 | 显示全部楼层
乘风*** 发表于 2023-6-13 19:08
红圈里的 EAXRAM 建议删掉,扩展寄存器访问使能可以一直开着(初始化时打开,之后都不要再关闭了)
这里 ...

刚才按照你的说法试了,  把EAXRAM(); 删了,留下第一个EAXSFR();还是不行。

点评

STC32G8K64系列的串口3超时功能是没问题的 测试代码如下: 你的代码问题应该是出在这里 正确代码或许应该是 "UR3TOCR &= ~SCALE_1us;"  详情 回复 发表于 2023-6-15 10:16
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-6-15 10:16:15 | 显示全部楼层
本帖最后由 zhp 于 2023-6-15 10:23 编辑
MaDa*** 发表于 2023-6-13 21:22
刚才按照你的说法试了,  把EAXRAM(); 删了,留下第一个EAXSFR();还是不行。

STC32G8K64系列的串口3超时功能是没问题的

测试代码如下:
  1. #include "stc32g.h"
  2. #define FOSC    11059200UL
  3. #define BRT     (65536 - FOSC / 115200 / 4)
  4. sbit LED    =   P2^0;
  5. void uart3() interrupt UART3_VECTOR
  6. {
  7.     if (S3TI)               //串口3发送中断
  8.     {
  9.         S3TI = 0;
  10.     }
  11.    
  12.     if (S3RI)               //串口3接收中断
  13.     {
  14.         S3RI = 0;
  15.         S3BUF = S3BUF;
  16.     }
  17.    
  18.     if (UR3TOSR & 0x01)     //串口3超时中断
  19.     {
  20.         UR3TOSR = 0x00;
  21.         
  22.         LED = ~LED;         //超时指示LED
  23.     }
  24. }
  25. int main()
  26. {
  27.     EAXFR = 1;
  28.     WTST = 0x00;
  29.    
  30.     P0M0 = 0x00; P0M1 = 0x00;
  31.     P1M0 = 0x00; P1M1 = 0x00;
  32.     P2M0 = 0x00; P2M1 = 0x00;
  33.     P3M0 = 0x00; P3M1 = 0x00;
  34.     P4M0 = 0x00; P4M1 = 0x00;
  35.     P5M0 = 0x00; P5M1 = 0x00;
  36.     P6M0 = 0x00; P6M1 = 0x00;
  37.     P7M0 = 0x00; P7M1 = 0x00;
  38.    
  39.     IAP_TPS = 11;
  40.    
  41.     S3CON = 0x10;           //串口3使用定时器2作为波特率发生器
  42.     T2L = BRT;              //设置串口2波特率
  43.     T2H = BRT >> 8;
  44.     AUXR = 0x14;            //设置定时器2为1T模式并启动定时器2
  45.    
  46.     UR3TOCR = 0xc0;         //使能串口3接收超时功能
  47.     UR3TOSR = 0x00;         //清超时状态
  48.     UR3TOTH = 0x00;         //设置超时时间为100us
  49.     UR3TOTL = 100;
  50.    
  51.     ES3 = 1;               
  52.     EA = 1;
  53.    
  54.     while (1);
  55. }
复制代码


你的代码问题应该是出在这里
1.png
正确代码或许应该是 "UR3TOCR &= ~SCALE_1us;"


1.png
代码中建议使用乘风飞扬的访问方式:初始化时打开,之后都不要再关闭了

串口3超时功能测试代码.zip

16.42 KB, 下载次数: 99

回复 支持 反对

使用道具 举报 送花

2

主题

8

回帖

48

积分

新手上路

积分
48
发表于 2023-6-15 11:16:56 | 显示全部楼层
zh*** 发表于 2023-6-15 10:16
STC32G8K64系列的串口3超时功能是没问题的

测试代码如下:

SCAL_1us  没问题。因为我是这样定义的
4.png

看了你给的代码。  我想问下超时定时器的工作机制。
超时计时器 是在这个语句是工作的吗?UR3TOCR = 0xc0;  。。
还有超时计数器,到达指定的计数是停止,还是重复工作?

点评

这里的定义有错,不知问题是否由这里引起的  详情 回复 发表于 2023-6-15 11:34
超时计时器 是在这个语句是工作的吗?UR3TOCR = 0xc0; 是的 还有超时计数器,到达指定的计数是停止,还是重复工作?重复工作  详情 回复 发表于 2023-6-15 11:26
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-6-15 11:26:51 | 显示全部楼层
本帖最后由 zhp 于 2023-6-15 11:32 编辑
MaDa*** 发表于 2023-6-15 11:16
SCAL_1us  没问题。因为我是这样定义的

你这种定义方法倒是很新奇,和一般的定义不一样
你的代码如果还是不正常,可将参考代码发出来我跑一下
就这个芯片来说,串口3的超时是没问题的

超时计时器 是在这个语句是工作的吗?UR3TOCR = 0xc0; 是的
还有超时计数器,到达指定的计数是停止,还是重复工作?重复工作
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-6-15 11:34:33 | 显示全部楼层
MaDa*** 发表于 2023-6-15 11:16
SCAL_1us  没问题。因为我是这样定义的

1.png

这里的定义有错,不知问题是否由这里引起的
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 08:44 , Processed in 0.165138 second(s), 113 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表