Mr_LG 发表于 2024-5-3 06:52:21

STC8H8K64U/32U,实测有串口接收超时,但新版手册上没见标注!【已澄清:没有】

本帖最后由 Mr_LG 于 2024-5-9 19:18 编辑

这里:

jwd 发表于 2024-5-3 08:19:36

超时没有,奇偶校验有吧

_奶咖君_ 发表于 2024-5-7 13:25:11

啥玩意,,STC8H8K64U这个单片机有超时中断?

Mr_LG 发表于 2024-5-7 13:41:32

本帖最后由 Mr_LG 于 2024-5-7 13:43 编辑

_奶咖君_ 发表于 2024-5-7 13:25
啥玩意,,STC8H8K64U这个单片机有超时中断?
呵呵,以图为证:

_奶咖君_ 发表于 2024-5-7 14:26:05

能看看你手头上的STC8H8K64U是什么版本的么0.0 如果和我手头上的是一样的话 我也测测去,,,如果有这个东西配DMA就太好用了

_奶咖君_ 发表于 2024-5-7 14:56:59

不是 不是 我说的是芯片丝印上最后两个字母。那个是芯片的硬件版本。。。

_奶咖君_ 发表于 2024-5-7 16:14:29

_奶咖君_ 发表于 2024-5-7 14:56
不是 不是 我说的是芯片丝印上最后两个字母。那个是芯片的硬件版本。。。 ...

好的 感谢了解了 ,,您这个是C版的我手头上的是D版的有空了我也测试一下。。

_奶咖君_ 发表于 2024-5-8 11:14:02

我这里测试没有这个功能。有点儿难受{:4_167:}。。
你再研究研究你的测试方法吧,可以试一试不开启发送接收中断设置一个最长的超时时间,看看灯的变化或者用其他的串口打印输出一下。

Mr_LG 发表于 2024-5-9 17:19:58

本帖最后由 Mr_LG 于 2024-5-9 17:23 编辑

_奶咖君_ 发表于 2024-5-8 11:14
我这里测试没有这个功能。有点儿难受。。
你再研究研究你的测试方法吧,可以试一试不开启发送接收中断设置 ...
谢谢你的提醒,反思了下,应该是原测试代码只能验证“有”而不能验证“无”!


//1,原中断服务:
//===================================================
void UART1_Intr(void) interrupt 4
{   //-------------------------------------
    if(RI)
    {   RI = 0;
      RX1_Buffer = SBUF;
      if(++RX1_Cnt >= S1Buf_Len)
      RX1_Cnt = 0;
    }
    //-------------------------------------
    if(TI)
    {   TI = 0;
      B_TX1_Busy = 0;
    }
    //-------------------------------------
    //下面当UR1TOSR寄存器不存在时,可能各位恒为1?
    if(UR1TOSR & 0x01) //判断是否产生超时中断
    {   B_RX1_OK = 1;
      UR1TOSR &= ~0x01; //清除超时标志位 TOIF
      C_LED = ~C_LED; //点灯!
    }
}

//2,是否应该改成这样:
//===================================================
void UART1_Intr(void) interrupt 4
{    //-------------------------------------
    if(RI)
    {   RI = 0;
      RX1_Buffer = SBUF;
      if(++RX1_Cnt >= S1Buf_Len)
      RX1_Cnt = 0;
    }
    //-------------------------------------
    else if(TI)
    {   TI = 0;
      B_TX1_Busy = 0;
    }
    //-------------------------------------
    else if(UR1TOSR & 0x01) //判断是否产生超时中断
    {    B_RX1_OK = 1;
      UR1TOSR &= ~0x01; //清除超时标志位 TOIF
      C_LED = ~C_LED; //点灯!
    }
}

_奶咖君_ 发表于 2024-5-9 18:24:29

主要的问题时,,如果读取一个不存在的寄存器,,,读出的不是零,,你那里的程序也是会执行的,,,
我那天稍微试了一下,先读取寄存器数值,,发现和默认值对不上,,然后赋值之后再读取也完全不对,,,所以认为可能是没有这个寄存器的。
页: [1] 2
查看完整版本: STC8H8K64U/32U,实测有串口接收超时,但新版手册上没见标注!【已澄清:没有】