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

STC8H1K08,串口通讯后改变了系统延时时间?

[复制链接]

该用户从未签到

3

主题

10

回帖

43

积分

新手上路

积分
43
发表于 2023-8-25 20:30:50 | 显示全部楼层 |阅读模式
程序中对时钟的初始化如下:


    IRC22M = (char idata *)0xfa;    IRC24M = (char idata *)0xfb;    //IRTRIM = *IRC22M;                           //装载22.1184MHz的IRC参数    IRTRIM = *IRC24M;                             //装载24MHz的IRC参数    P_SW2 = 0x80;    CLKDIV = 0;                                 //主时钟不预分频    P_SW2 = 0x00;



#define MAIN_Fosc                24000000L        //定义主时钟



所用延时函数为:
void delay_ms(unsigned char ms){        unsigned int i;        do{                i = MAIN_Fosc / 10000;                while(--i);        }while(--ms);}


在程序的主循环中和中断中都使用了延时函数,突然发现如果程序启动后和外系统有过串口通讯的话(115200波特率),主循环里面的延时函数会增大18倍多(6毫秒变成100多毫秒,而中断里面的延时函数正常。)
如果没有串口通讯,则主循环和中断中的延时函数都正常。
请问造成延时函数不准的原因是什么?
回复 送花

使用道具 举报

该用户从未签到

3

主题

10

回帖

43

积分

新手上路

积分
43
 楼主| 发表于 2023-8-25 20:32:02 | 显示全部楼层
    IRC22M = (char idata *)0xfa;

    IRC24M = (char idata *)0xfb;

    IRTRIM = *IRC24M;                             //装载24MHz的IRC参数


    P_SW2 = 0x80;

    CLKDIV = 0;                                 //主时钟不预分频
   
  P_SW2 = 0x00;
回复 支持 反对 送花

使用道具 举报

该用户从未签到

3

主题

10

回帖

43

积分

新手上路

积分
43
 楼主| 发表于 2023-8-25 20:41:25 | 显示全部楼层
好奇怪的现象,麻烦工程师帮忙解释一下。
回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    开心
    昨天 18:20
  • 签到天数: 161 天

    [LV.7]常住居民III

    9

    主题

    309

    回帖

    3775

    积分

    荣誉版主

    积分
    3775
    发表于 2023-8-25 22:23:49 | 显示全部楼层
    串口是有中断的,收发数据需要耗费时间
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    3

    主题

    10

    回帖

    43

    积分

    新手上路

    积分
    43
     楼主| 发表于 2023-8-26 13:02:14 | 显示全部楼层
    kksk 发表于 2023-8-25 22:23
    串口是有中断的,收发数据需要耗费时间

    只通讯了一次,之后主循环里的延时都被改变了10几倍。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    3

    主题

    10

    回帖

    43

    积分

    新手上路

    积分
    43
     楼主| 发表于 2023-8-28 13:43:51 | 显示全部楼层
    本帖最后由 mars1479 于 2023-8-28 16:20 编辑

    已解决。
    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    11 小时前
  • 签到天数: 171 天

    [LV.7]常住居民III

    26

    主题

    821

    回帖

    2060

    积分

    金牌会员

    积分
    2060
    发表于 2023-8-28 20:40:43 | 显示全部楼层
    中断里面就不要用延时了吧
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-17 17:41 , Processed in 0.063466 second(s), 53 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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