STC32G12K128--T1做外部计数器--模式1时的问题
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是完全互不相干的两部分,不应该有干涉.
程序未发现问题
串口2固定用定时器2做波特率发生器 串口2初始化代码加这条指令:
S2CFG |= 0x01;//使用串口2时,W1位必需设置为1,否则可能会产生不可预期的错误
用附件例子测试
你说的W1的问题 , 虽然W1没有置1但: 1. 在没有使用T1作为外部计数器时, 串口2是正常的.
2. T1模式1: T1外部计数正常, 串口2不正常, 而T1模式0两个都正常.
3. T1和串口2是两个独立的单元,应该是不会互相干涉的
以上疑问是不是芯片有BUG.
页:
[1]