找回密码
 立即注册
查看: 390|回复: 9

已解决!!! delay_ms()函数 软件延时 时间不对 求解答

[复制链接]
  • TA的每日心情
    开心
    2024-4-28 19:56
  • 签到天数: 61 天

    [LV.6]常住居民II

    13

    主题

    64

    回帖

    335

    积分

    中级会员

    积分
    335
    发表于 2023-12-16 08:03:56 | 显示全部楼层 |阅读模式
    本帖最后由 泰勒soc 于 2023-12-30 08:55 编辑

    先上代码
    型号8H1K24-LQFP32
    1. #define MAIN_Fosc 24000000UL
    2. void delay_ms(u16 ms)
    3. {//Fosc24M
    4.      u16 i;
    5.      do{
    6.           i = MAIN_Fosc / 10000;
    7.           while(--i);//
    8.      }while(--ms);
    9. }
    复制代码


    这个函数是毫秒定时函数,我的计算方法是:周期 * 次数
    周期 = 1 / 24M
    次数 = 24M / 1000
    这样计算的时间理论上是1ms
    但是,用示波器测量不对,次数改为24M / 10000,示波器测量的时间就是1ms。
    求解答,是我的计算方法不对,还是其他问题?

    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-12-5 13:56
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    12

    主题

    259

    回帖

    1590

    积分

    超级版主

    积分
    1590
    发表于 2023-12-16 09:07:13 | 显示全部楼层
    可以直接下载软件上自动生成:

    截图202312160907087589.jpg

    电话:0513-55012946 QQ:2195591714  微信:  19952583740
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-28 19:56
  • 签到天数: 61 天

    [LV.6]常住居民II

    13

    主题

    64

    回帖

    335

    积分

    中级会员

    积分
    335
     楼主| 发表于 2023-12-16 09:08:38 | 显示全部楼层
    STC32G12K128 发表于 2023-12-16 09:07
    可以直接下载软件上自动生成:

    没有意义
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    11 小时前
  • 签到天数: 172 天

    [LV.7]常住居民III

    67

    主题

    861

    回帖

    2886

    积分

    金牌会员

    积分
    2886
    发表于 2023-12-16 09:34:57 | 显示全部楼层
    请问什么型号的?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-28 19:56
  • 签到天数: 61 天

    [LV.6]常住居民II

    13

    主题

    64

    回帖

    335

    积分

    中级会员

    积分
    335
     楼主| 发表于 2023-12-16 10:47:09 | 显示全部楼层
    xxkj2010 发表于 2023-12-16 09:34
    请问什么型号的?

    8H1K24-LQFP32
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    11 小时前
  • 签到天数: 172 天

    [LV.7]常住居民III

    67

    主题

    861

    回帖

    2886

    积分

    金牌会员

    积分
    2886
    发表于 2023-12-16 11:13:31 | 显示全部楼层
    可能因为这芯片是10T的吧。例程中有注释:
    1. //========================================================================
    2. // 函数: void delay_ms(u8 ms)
    3. // 描述: 延时函数。
    4. // 参数: ms,要延时的ms数, 这里只支持1~255ms. 自动适应主时钟.
    5. // 返回: none.
    6. // 版本: VER1.0
    7. // 日期: 2021-3-9
    8. // 备注:
    9. //========================================================================
    10. void delay_ms(u8 ms)
    11. {
    12.      u16 i;
    13.      do{
    14.           i = MAIN_Fosc / 10000;
    15.           while(--i);   //10T per loop
    16.      }while(--ms);
    17. }
    复制代码
    复制代码

    回复 支持 1 反对 0 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-28 19:56
  • 签到天数: 61 天

    [LV.6]常住居民II

    13

    主题

    64

    回帖

    335

    积分

    中级会员

    积分
    335
     楼主| 发表于 2023-12-16 11:20:49 | 显示全部楼层
    xxkj2010 发表于 2023-12-16 11:13
    可能因为这芯片是10T的吧。例程中有注释:

    那应该就是了,我测的时候就是大了10倍。这个手册上写了吗?哪里有介绍
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    11 小时前
  • 签到天数: 172 天

    [LV.7]常住居民III

    67

    主题

    861

    回帖

    2886

    积分

    金牌会员

    积分
    2886
    发表于 2023-12-16 11:42:43 | 显示全部楼层
    本帖最后由 xxkj2010 于 2023-12-16 11:45 编辑
    泰勒soc 发表于 2023-12-16 11:20
    那应该就是了,我测的时候就是大了10倍。这个手册上写了吗?哪里有介绍

    手册倒是没有说明,但厂家提供的例程中有说明是10T。所以要用STC单片机,除了要认真看手册外,还得看例程。

    点评

    唉,,这就是手册被疯狂吐槽的原因么  发表于 2023-12-16 13:32
    回复 支持 1 反对 0 送花

    使用道具 举报

  • TA的每日心情
    开心
    11 小时前
  • 签到天数: 172 天

    [LV.7]常住居民III

    67

    主题

    861

    回帖

    2886

    积分

    金牌会员

    积分
    2886
    发表于 2023-12-16 13:40:39 | 显示全部楼层
    xxkj2010 发表于 2023-12-16 11:42
    手册倒是没有说明,但厂家提供的例程中有说明是10T。所以要用STC单片机,除了要认真看手册外,还得看例程 ...

    是的,因定向思维来用STC单片机,有时就会误入死胡同。
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-17 17:43 , Processed in 0.073490 second(s), 65 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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