找回密码
 立即注册
查看: 199|回复: 3

STC32G12K128--T1做外部计数器--模式1时的问题

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:40
  • 最近打卡:2026-02-01 17:17:26

11

主题

28

回帖

363

积分

中级会员

积分
363
发表于 2025-12-30 13:25:40 | 显示全部楼层 |阅读模式
STC32G128--T1做外部计数器(P3.5)--模式1(16位不自动重载模式)时,计数能正常工作.但影响串口2(TXD2_2)P4.7--打印串口(T2做波特率定时器),
使打印输出为一个固定字符(这是打印串口输出的数据80 80 00 80 00 80 00 80 80 00 80 80 80 80).
但如果外部计数器改为模式模式0,一切正常,打印和计数都正常.
下面是分别模式1和模式0的c代码
打印串口2的初始化代码:

void Init_UART2(void)
{
        S2_S=1;                        //打印串口2切换到P4.6,P4.7
        S2CON = 0x50;                //8位数据,可变波特率
        AUXR &= 0xFB;                //T2--12T
        T2L = 0xd0;                //设定定时初值9600
        T2H = 0xff;
        AUXR |= 0x10;                //启动T2
        ES2=0;                        //禁止串口2中断--打印查询方式
}


计数器1模式1代码


//计数器1初始化
void Time1_Init(void)
{
        AUXR |= 0x40;                //计数器1时钟1T模式
        TMOD |= 0x50;                //设置计数器1模式
        TL1 = 0x00;                        //初值
        TH1 = 0x00;
        TF1 = 0;
        TR1=1;
}

计数器1模式0代码


//计数器1初始化
void Time1_Init(void)
{
        AUXR |= 0x40;                //计数器1时钟1T模式
        TMOD |= 0x40;                //设置计数器0模式
        TL1 = 0x00;                        //初值
        TH1 = 0x00;
        TF1 = 0;
        TR1=1;
}

希望各位大神能解释一下是什么原因.
我的理解T1和串口2是完全互不相干的两部分,不应该有干涉.
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:722
  • 最近打卡:2026-03-16 06:56:40
已绑定手机

97

主题

7243

回帖

1万

积分

超级版主

积分
13784
发表于 2025-12-30 15:52:37 | 显示全部楼层
程序未发现问题
串口2固定用定时器2做波特率发生器
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:640
  • 最近打卡:2026-03-16 09:10:58
已绑定手机

52

主题

2480

回帖

8772

积分

论坛元老

积分
8772
发表于 2025-12-30 17:04:34 | 显示全部楼层
串口2初始化代码加这条指令:
  1. S2CFG |= 0x01;  //使用串口2时,W1位必需设置为1,否则可能会产生不可预期的错误
复制代码

用附件例子测试
截图202512301704315080.jpg

利用T0,T1做外部计数器-串口2输出THxTLx计数值.zip

16.48 KB, 下载次数: 2

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:40
  • 最近打卡:2026-02-01 17:17:26

11

主题

28

回帖

363

积分

中级会员

积分
363
发表于 2025-12-30 19:08:46 | 显示全部楼层
你说的W1的问题 , 虽然W1没有置1但: 1. 在没有使用T1作为外部计数器时, 串口2是正常的.
                                                       2. T1模式1: T1外部计数正常, 串口2不正常, 而T1模式0两个都正常.
                                                       3. T1和串口2是两个独立的单元,应该是不会互相干涉的
以上疑问是不是芯片有BUG.
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-3-17 07:07 , Processed in 0.106930 second(s), 63 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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