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

关于单片机外部中断问题,请大神指点

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
void ext0() interrupt 04 Q) }7 s* T0 n4 d
{
  _5 |- a" r6 S) [" ~& r
7 P( m0 E) V. xkeyscan;();//键盘里改变 F 的数字
4 K( C- g3 t1 k9 `. S9 @5 n
% f  E2 g0 @7 o1 Y1 z% F}) I6 }# ]: c# N0 ^$ y
void main()8 M- e: L. j5 W! ~' L! S
{
; h! C% R) v8 _) N$ b7 G                        while(1)
* S: f& ~6 {2 n3 L                                {2 [! G. U! g+ \
                                        switch(F)( j( v" D5 r, Y" S+ z# c" i+ N
                                                {
. u/ m2 A% c- P) `. c                                                        case 1:% Q: ]) \, E1 F
                                                                 pattern1();//里面很多语句2 z, |. F, i& G7 p, U
                                                        break;8 K9 z! ?8 e2 B/ m; b* n  @: ~- B
                                                        case 2:, m5 _) V, e3 `  v% Y5 H
                                                                 pattern2();//里面很多语句
: z' t6 X: G$ Q7 |" ?; J, c( `                                                        break;. r1 d: y) Z: ?8 s+ b+ E# }7 @/ h
                                                        case 3:$ a( V8 V9 y1 O$ P* o) W& U/ T# R$ u
                                                                 pattern3();//里面很多语句
  M7 r+ W! F9 P6 }1 f                                                        break;
% _* W! e; i  }% F9 [0 v% L                                                                                                : O% l* y0 \" a
                                                }- K, K4 B, v: [, y' a' i6 w8 T
) _5 F. l' B1 f+ }2 h
}* G3 L3 M" u9 _

2 d! I1 D3 T8 k! y% n4 I' m
9 `! w" v3 k7 X9 j1 c, E
按下外部中断键 进入中断,中断里就是键 盘扫描,改变F的数值 ,但是中断结束返回后,不会立即执行F数值 所指定的语句,而是返回中断点执行完原来的,才会重新判断F的数值 ,执行相应的语句,我想这个应该 怎么写才能F数值 发生改变后  立即执行,大师门给个思路。
+ q' \' ]: b7 k/ n$ g: F$ S

该用户从未签到

2#
发表于 2020-8-18 10:26 | 只看该作者
你看看中断配置对着吗
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2020-8-18 13:24 | 只看该作者
    按键外部中断,也可以IO口控制

    点评

    谢谢。。。  详情 回复 发表于 2020-8-18 14:54

    该用户从未签到

    4#
     楼主| 发表于 2020-8-18 14:54 | 只看该作者
    Heaven_1 发表于 2020-8-18 13:249 h& ^6 z% ^8 C$ A/ s: R
    按键外部中断,也可以IO口控制
    . g) e) K1 \4 i7 j0 w7 j
    谢谢。。。8 r2 G2 y$ n# Z' g- x5 q

    该用户从未签到

    5#
    发表于 2020-8-18 14:55 | 只看该作者
    你的意思是不是在执行pattern2();的过程中,突然来了中断,中断按键扫描的结果是F=1;但是中断退出后你想直接执行pattern1();但是程序还是会把pattern2();执行完才会执行pattern1();导致1的任务被立即执行,产生了问题,是这样吧!
    + l+ k( @' u9 v) F+ r& J3 `: L' E) q
    0 J! Q$ Z) v7 W& L* j如果是这样,你需要将pattern1();直接放到中断中去执行,但是要确保它不会占用太长时间,尤其是delay肯定是不能有的。其实我们把这种任务叫做“刹车”任务,有危险就要刹车,车就要立即停止,所有其它任务都要靠边儿站,这样才不会发生交通事故。
      F! a6 W4 }9 ~# p5 l
    / B+ }7 p( ?3 e1 E你还可以通过引入OS来尽可能保证单核MCU的资源尽可能不被delay这种耗时间的任务占用不必要的时间,
    ( a. ^7 P6 l9 O' E% L: r7 K同时,也可以通过给任务排版优先级来解决任务排序问题,但是以你目前的能力,不建议立即引入,再多写写代码,多看看代码吧。" M- e4 c9 P1 R- J. b4 P. J; O
    另外,如果你是多核的mcu,可以让不同内核做不同的事情,也能解决你的问题,这个不太符合你的情况。
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    6#
    发表于 2020-8-18 15:48 | 只看该作者
    ggfhkl45 发表于 2020-8-18 14:54( q7 e0 t7 E/ B) Q, j
    谢谢。。。
    3 G) ]0 k" g- r" w
    简化任务,优化设计,使程序尽可能多的时间处于休眠状态,而非高速循环运行!中断发生时,程序尽可能是从一个固定的休眠位置唤醒!

    : K& B! C; M5 z1 L

    该用户从未签到

    7#
    发表于 2020-8-18 16:43 | 只看该作者
    hthjgjkkl 发表于 2020-08-18 14:55:21
      N; O! c/ p) s% y5 E% n$ j" _你的意思是不是在执行pattern2();的过程中,突然来了中断,中断按键扫描的结果是F=1;但是中断退出后你想直接执行pattern1();但是程序还是会把pattern2();执行完才会执行pattern1();导致1的任务被立即执行,产生了问题,是这样吧!
    + t& L. A; l  ^+ `6 y5 |3 d  |8 f- a* Z9 G8 ^* s, D
    如果是这样,你需要将pattern1();直接放到中断中去执行,但是要确保它不会占用太长时间,尤其是delay肯定是不能有的。其实我们把这种任务叫做“刹车”任务,有危险就要刹车,车就要立即停止,所有其它任务都要靠边儿站,这样才不会发生交通事故。9 X# ~, c+ L# w& u. w; H
    & Y" ~. X0 Z$ }! e
    你还可以通过引入OS来尽可能保证单核MCU的资源尽可能不被delay这种耗时间的任务占用不必要的时间," }. `8 x6 m+ c( a
    同时,也可以通过给任务排版优先级来解决任务排序问题,但是以你目前的能力,不建议立即引入,再多写写代码,多看看代码吧。
    - a; L* s$ _- Q5 P6 J; w$ X另外,如果你是多核的mcu,可以让不同内核做不同的事情,也能解决你的问题,这个不太符合你的情况。
    % J: P# `, S2 @) Q# D" z/ T
      Q) C1 n- P" m$ M4 [
    这个详细
    + K0 D5 x4 j/ Z( ~. _4 \" L0 V+ s

    “来自电巢APP”

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-10-11 06:43 , Processed in 0.125000 second(s), 24 queries , Gzip On.

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

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

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