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

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

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:133
  • 最近打卡:2025-04-30 13:40:52

13

主题

65

回帖

594

积分

高级会员

积分
594
发表于 2023-12-16 08:03:56 | 显示全部楼层 |阅读模式
先上代码
型号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。
求解答,是我的计算方法不对,还是其他问题?
单片机是10T的


回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:20
  • 最近打卡:2025-04-28 16:56:43

21

主题

376

回帖

2345

积分

超级版主

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

截图202312160907087589.jpg

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:133
  • 最近打卡:2025-04-30 13:40:52

13

主题

65

回帖

594

积分

高级会员

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

没有意义
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:520
  • 最近打卡:2025-05-01 08:06:21

109

主题

1897

回帖

5204

积分

论坛元老

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:133
  • 最近打卡:2025-04-30 13:40:52

13

主题

65

回帖

594

积分

高级会员

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

8H1K24-LQFP32
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:520
  • 最近打卡:2025-05-01 08:06:21

109

主题

1897

回帖

5204

积分

论坛元老

积分
5204
发表于 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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:133
  • 最近打卡:2025-04-30 13:40:52

13

主题

65

回帖

594

积分

高级会员

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

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:520
  • 最近打卡:2025-05-01 08:06:21

109

主题

1897

回帖

5204

积分

论坛元老

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

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

点评

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:520
  • 最近打卡:2025-05-01 08:06:21

109

主题

1897

回帖

5204

积分

论坛元老

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

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 02:14 , Processed in 0.165366 second(s), 105 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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