找回密码
 注册
关于网站域名变更的通知
查看: 208|回复: 3
打印 上一主题 下一主题

一个关于单片机硬件延时的疑惑

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-1-17 10:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
我对硬件定时进行了了解,发现替代的方法有个用定时器来搞的:
1 O9 Z1 V7 r/ m% T& `  M  O1 w在定时器中断里设置一个标志位,每当定时器运行到设定的时间,就将该位置置位(定时短)或+1(定时时间较长),然后用外部程序去查询这个标志位,做判断., S( `' f# x2 k) _
2 ~( K1 n9 V7 ^
但是我又有了个疑惑,对于后者,假如我要定时30毫秒,定时器溢出时间为1ms,标志位用8位无符号
# ^4 q4 G1 n2 H: r5 g* e7 a那到了240的时候,240+30=14 ,溢出了~ 这个怎么处理?- i8 g6 S, k- i
难道我把最大阈值设定为225么? 那假如我有多个不同的延时需要进行处理呢?.... 没办法呀~ 难道要设置最大延时限制值么?...; {- w/ _0 m9 m! G$ N; |! ^
; f% E8 J! X/ P% N
让人很是摸不着头脑,求大家帮助一下我呀~
! S7 \8 F2 y. v6 i/ }. M$ Z& s6 G, h" e+ k7 u2 j& S/ _

5 h" e! H. a6 Y. I$ c. M" q2 G$ K: I* ]+ W6 J
& |* T6 g% C3 I  j/ w! g1 e
  • TA的每日心情
    开心
    2023-5-15 15:25
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2022-1-17 13:11 | 只看该作者
    你用的是什么单片机
  • TA的每日心情
    开心
    2023-5-15 15:25
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2022-1-17 13:16 | 只看该作者
    单片机都有对应的例子程序
    . W% F2 ~. ~) o6 `( s$ U* P: W如果定时1ms,时间到后,就会进入中断程序,这时候中断有个计数器加1,
    ( D4 @( ]6 p" t, v0 l# b9 m1 W9 [再用一个判断句
    , j) X7 p9 [5 uif(num>30), e' K, A! f% r3 }5 N
    产生你需要的标志,

    该用户从未签到

    4#
    发表于 2022-1-17 14:18 | 只看该作者
    标志位可以随时清零。
    4 B9 B' W; q  n& ]$ G. i  _等到了30ms 执行操作后,顺便清零标志位,
    ' J3 X/ x( e. e" O* z9 n7 U, O/ |2 X$ C  p/ ~
    & E/ K3 r4 I+ b

    5 Z2 Q: ^( h+ k, Z8 j, p可以设置多个变量 例如 flag_300ms = 0;  上面每次到30ms 就加一;
    5 t+ V+ N% j2 n& q1 r% D& i然后大循环里面判断flag_300ms ==9,执行操作,清零  flag_300ms
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-9-30 01:00 , Processed in 0.109375 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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