找回密码
 立即注册
查看: 1164|回复: 6

stc32G关于串口个数和定时器及端口的问题请教

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:379
  • 最近打卡:2025-05-02 11:40:42

43

主题

336

回帖

595

积分

高级会员

积分
595
发表于 2023-9-7 19:37:38 | 显示全部楼层 |阅读模式
在stc32g中一共有4个定时器,通常用定时器2做串口定时器。可以串口的引脚18个。定时器应该不能光给定时器用。例子中给的看到的是一个定时器给一个器口。应该不是这样的。 比如实现需要的1个串口用来和电脑通信。2个用来485通信,3个用来蓝牙通信。 这要用了三个口。在硬件上这三个是不可以共用的。如果要 这三种共存是要用到6个端口。还是用定时器2.开串口1.但是RX TX要三组。相当于同一个串口。不知道这个是怎么设置实现的。还请大老指教
回复

使用道具 举报 送花

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

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-9-8 09:42:24 | 显示全部楼层
STC32G共有5个定时器,如果串口的波特率相同,可以使用定时器2昨晚波特率发生器
至于你的需求,看不太明白,还请描述更详细一些
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:379
  • 最近打卡:2025-05-02 11:40:42

43

主题

336

回帖

595

积分

高级会员

积分
595
发表于 2023-9-8 11:35:01 | 显示全部楼层
我的意思就是串口1就用定时器2做波特率发生器。用多个口。一个用于485  一个用于蓝牙  3.0 3.1 用于下载。这个应该是可以的。不过目前我没法测试了。USB转TTL坏了。
    P_SW1 &= 0x3f;
//  P_SW1 |= 0x00;      //UART1 switch to, 0x00: P3.0 P3.1, 0x40: P3.6 P3.7, 0x80: P1.6 P1.7, 0xC0: P4.3 P4.4
       
                P_SW1 |= 0x00;   
                                P_SW1 |= 0x40;   
                                P_SW1 |= 0x80;   
                                P_SW1 |= 0xc0;   

用上面的代码就可以了应该。不过现在我没有串口工具没法验证。如果这样可以请告诉了。
回复 支持 反对

使用道具 举报 送花

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

39

主题

2006

回帖

6845

积分

论坛元老

积分
6845
发表于 2023-9-8 17:18:04 | 显示全部楼层
qepu*** 发表于 2023-9-8 11:35
我的意思就是串口1就用定时器2做波特率发生器。用多个口。一个用于485  一个用于蓝牙  3.0 3.1 用于下载。 ...

一组串口可以切换到不同的通道使用,但是切换到一个通道后,其它通道就没有串口功能了。
如果只需要发送的话可以用切换通道的方式进行分时复用。
如果还要接收的话,除非你知道对方什么时候会给你发数据,并且不会几个通道同时进行发送。
STC32G有4组串口,可以同时使用,如果你只需要3组串口的话,开启其中3个就可以。没必要拿一组串口进行分时复用。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:379
  • 最近打卡:2025-05-02 11:40:42

43

主题

336

回帖

595

积分

高级会员

积分
595
发表于 2023-9-8 21:34:50 | 显示全部楼层
乘风*** 发表于 2023-9-8 17:18
一组串口可以切换到不同的通道使用,但是切换到一个通道后,其它通道就没有串口功能了。
如果只需要发送 ...

试了一下不能同时打开多个端口复用。会发不出数据。我本来以为是可以同时发同时收。这样就可以省好多事情。看来是不可以啊。。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-06-25 10:41:44

1

主题

8

回帖

49

积分

新手上路

积分
49
发表于 2023-10-12 15:55:57 | 显示全部楼层
zh*** 发表于 2023-9-8 09:42
STC32G共有5个定时器,如果串口的波特率相同,可以使用定时器2昨晚波特率发生器
至于你的需求,看不太明白 ...

请问定时器不够用了咋办

点评

高级PWM可当8个定时器使用 示例代码可参考STC32G的数据手册高级PWM掌击  详情 回复 发表于 2023-10-12 18:35
回复 支持 反对

使用道具 举报 送花

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

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-10-12 18:35:26 | 显示全部楼层
cai*** 发表于 2023-10-12 15:55
请问定时器不够用了咋办

高级PWM可当8个定时器使用
示例代码可参考STC32G的数据手册高级PWM掌击
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-4 23:06 , Processed in 0.132944 second(s), 95 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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