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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
void ext0() interrupt 0
0 j3 P+ [6 \6 |' o/ y{
( O' c/ T% N# x% J. v5 T
4 b/ N" c$ c* a, F% Akeyscan;();//键盘里改变 F 的数字
- H+ X6 e8 a3 M/ T3 o* y/ o3 D0 _/ R! P; l2 I# M$ {0 E
}
& C6 |, L# b  B8 d9 `  svoid main()
  c5 y; g1 |  ?{
: G8 ]4 j' l# r3 E: A                        while(1)9 m/ P6 ^% S7 c+ C0 C+ W6 p. H* p
                                {
) T. _: F4 }4 k                                        switch(F)
( l4 B3 W1 n$ ?) A* a5 @* `6 f) N# d                                                {" Q( a0 {% g3 I3 w* L
                                                        case 1:
: q/ G" O, N  G3 |  t, x5 D9 I                                                                 pattern1();//里面很多语句
- y2 e% d& f2 G, R: O3 }% @                                                        break;* v' n- w# w0 g
                                                        case 2:7 S/ N; c) |' ?# O: y
                                                                 pattern2();//里面很多语句* [$ U4 h# [9 }8 T$ i9 Z7 t
                                                        break;& p" e: U0 x" r8 Z" R2 \7 a- P! q1 u
                                                        case 3:. s2 a* m1 b4 C! y
                                                                 pattern3();//里面很多语句! d8 @% T0 A7 r6 g8 [( e
                                                        break;% f, c4 T4 U# q1 R- {
                                                                                                * T* k* X! o" m. g/ ^
                                                }
6 l9 @& q$ \! `$ @
9 W* J! d6 p: g! e( }& A}" s9 X2 L5 Q1 [1 v4 a
$ i9 B% y- Y4 S0 a4 Z* O0 v

! Y4 j6 o# N) m! a6 v7 A按下外部中断键 进入中断,中断里就是键 盘扫描,改变F的数值 ,但是中断结束返回后,不会立即执行F数值 所指定的语句,而是返回中断点执行完原来的,才会重新判断F的数值 ,执行相应的语句,我想这个应该 怎么写才能F数值 发生改变后  立即执行,大师门给个思路。1 D3 C* A$ f0 ?. ^7 {9 o, D

该用户从未签到

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:24
    ! o2 i7 A. U( X+ P8 a按键外部中断,也可以IO口控制

    4 {' T1 N! l5 d% e谢谢。。。( Y' {7 R& w9 g, z3 U

    该用户从未签到

    5#
    发表于 2020-8-18 14:55 | 只看该作者
    你的意思是不是在执行pattern2();的过程中,突然来了中断,中断按键扫描的结果是F=1;但是中断退出后你想直接执行pattern1();但是程序还是会把pattern2();执行完才会执行pattern1();导致1的任务被立即执行,产生了问题,是这样吧!
    2 {: ^8 ~# J1 \9 _
    . |8 i: Y: D8 A; e0 g+ C如果是这样,你需要将pattern1();直接放到中断中去执行,但是要确保它不会占用太长时间,尤其是delay肯定是不能有的。其实我们把这种任务叫做“刹车”任务,有危险就要刹车,车就要立即停止,所有其它任务都要靠边儿站,这样才不会发生交通事故。  `4 l6 M4 Q7 C9 g+ y& X9 |4 m" I

    2 ^8 I& `. J! C6 ?8 ^你还可以通过引入OS来尽可能保证单核MCU的资源尽可能不被delay这种耗时间的任务占用不必要的时间,4 [, Y- e% }# t  I/ A3 P3 r% L1 s
    同时,也可以通过给任务排版优先级来解决任务排序问题,但是以你目前的能力,不建议立即引入,再多写写代码,多看看代码吧。
    5 p1 N5 Q- r, G- L, s另外,如果你是多核的mcu,可以让不同内核做不同的事情,也能解决你的问题,这个不太符合你的情况。
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    6#
    发表于 2020-8-18 15:48 | 只看该作者
    ggfhkl45 发表于 2020-8-18 14:54# {9 {9 t5 }) f2 {1 E
    谢谢。。。

    $ `) d8 i  `0 r8 X2 J
    简化任务,优化设计,使程序尽可能多的时间处于休眠状态,而非高速循环运行!中断发生时,程序尽可能是从一个固定的休眠位置唤醒!
    4 I$ F  b1 ~% c4 Y5 a/ _* M

    该用户从未签到

    7#
    发表于 2020-8-18 16:43 | 只看该作者
    hthjgjkkl 发表于 2020-08-18 14:55:215 N5 L% f2 @+ j: X8 y# g. P/ ?" X# B
    你的意思是不是在执行pattern2();的过程中,突然来了中断,中断按键扫描的结果是F=1;但是中断退出后你想直接执行pattern1();但是程序还是会把pattern2();执行完才会执行pattern1();导致1的任务被立即执行,产生了问题,是这样吧!
    % e0 Y3 G- I. y3 c7 H+ ]
    7 l9 r5 h/ t. V% m. A如果是这样,你需要将pattern1();直接放到中断中去执行,但是要确保它不会占用太长时间,尤其是delay肯定是不能有的。其实我们把这种任务叫做“刹车”任务,有危险就要刹车,车就要立即停止,所有其它任务都要靠边儿站,这样才不会发生交通事故。; F' |' Y! S) l6 w8 f& u# B! E

    % b: r" Q7 m, [# h' T你还可以通过引入OS来尽可能保证单核MCU的资源尽可能不被delay这种耗时间的任务占用不必要的时间,3 v2 Z; U8 W6 E5 I
    同时,也可以通过给任务排版优先级来解决任务排序问题,但是以你目前的能力,不建议立即引入,再多写写代码,多看看代码吧。
    1 c4 T: h' ~  i! T3 p# T" A& ~+ ^另外,如果你是多核的mcu,可以让不同内核做不同的事情,也能解决你的问题,这个不太符合你的情况。

    2 u% x# a6 y% i7 ~7 _
    . Q1 r( ]& S; M7 V  p这个详细9 X- k( W6 V) S6 O4 v% r; k! t

    “来自电巢APP”

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-8-21 07:26 , Processed in 0.109375 second(s), 24 queries , Gzip On.

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

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

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