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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
void ext0() interrupt 0
5 Y" p1 N/ C% e/ r( ^& p{. o# l3 S& D4 s, A/ x( P

; W6 I- {# e# f2 }" F$ ekeyscan;();//键盘里改变 F 的数字2 m1 c4 N6 R' ~6 S% W) J
: x9 `* O1 Q. J* f- W, n9 w- p8 ~5 Z
}
) w: ]% ~! `6 C1 d$ p+ W% G( \void main()
, o; E, H5 t8 D. A' o/ L{
; P0 @) ^, W1 d4 z  \1 x                        while(1)
1 ?% J& b2 z0 j. G1 t, |" ~! k5 r                                {
1 \) W# L2 y8 x* g                                        switch(F)5 ~$ g5 T) q* A
                                                {6 D# d9 e* ]6 O. \
                                                        case 1:9 T' h9 l: Q' Q/ E/ p9 E. x/ w
                                                                 pattern1();//里面很多语句
7 y5 {+ U: e* e8 c4 C* o! n* M# o                                                        break;
5 x8 `4 H$ f8 k& ^& }( }$ F                                                        case 2:' s" ]$ X# Y4 M. c7 _
                                                                 pattern2();//里面很多语句
5 _- J* K0 q# r! I6 ~                                                        break;
. [# Z2 e. m$ l9 L                                                        case 3:
. _( Q& m7 D- C6 j* |4 A                                                                 pattern3();//里面很多语句& t( L2 A! Y: U4 c1 N) m
                                                        break;
/ d. u; K! e7 V: E& ^                                                                                                
" t, l, z" J: I9 N% T# W$ T  k                                                }! L. C$ {  A$ B

7 g3 ?/ ?7 I) B. O) R}4 [$ P! V+ E8 n& u1 G. p3 Y

! B! ]& E" m' t; m$ `
3 {& T3 v  {0 ~0 \! T
按下外部中断键 进入中断,中断里就是键 盘扫描,改变F的数值 ,但是中断结束返回后,不会立即执行F数值 所指定的语句,而是返回中断点执行完原来的,才会重新判断F的数值 ,执行相应的语句,我想这个应该 怎么写才能F数值 发生改变后  立即执行,大师门给个思路。
/ |! l$ W" E0 c3 M% J$ X6 `8 S! U

该用户从未签到

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, z5 D! i% u, }5 V
    按键外部中断,也可以IO口控制

    $ Y) Z- T3 b+ C! M0 _. n0 O& ~9 C5 g谢谢。。。1 k! `  B, @1 G6 v

    该用户从未签到

    5#
    发表于 2020-8-18 14:55 | 只看该作者
    你的意思是不是在执行pattern2();的过程中,突然来了中断,中断按键扫描的结果是F=1;但是中断退出后你想直接执行pattern1();但是程序还是会把pattern2();执行完才会执行pattern1();导致1的任务被立即执行,产生了问题,是这样吧!
    # P  z) j0 b5 }8 w6 P: T8 N# N" P
    如果是这样,你需要将pattern1();直接放到中断中去执行,但是要确保它不会占用太长时间,尤其是delay肯定是不能有的。其实我们把这种任务叫做“刹车”任务,有危险就要刹车,车就要立即停止,所有其它任务都要靠边儿站,这样才不会发生交通事故。0 H% {) @8 N- p/ M, O: T' b  n+ \/ `
    $ n% V2 R# S5 t2 W" g/ g
    你还可以通过引入OS来尽可能保证单核MCU的资源尽可能不被delay这种耗时间的任务占用不必要的时间,
    ; N! G+ p6 G. H, S同时,也可以通过给任务排版优先级来解决任务排序问题,但是以你目前的能力,不建议立即引入,再多写写代码,多看看代码吧。1 D" N3 f4 W& u* M$ M
    另外,如果你是多核的mcu,可以让不同内核做不同的事情,也能解决你的问题,这个不太符合你的情况。
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    6#
    发表于 2020-8-18 15:48 | 只看该作者
    ggfhkl45 发表于 2020-8-18 14:54( x0 R. H" {) W4 b8 u
    谢谢。。。
    ( }; t! T  w+ r& A
    简化任务,优化设计,使程序尽可能多的时间处于休眠状态,而非高速循环运行!中断发生时,程序尽可能是从一个固定的休眠位置唤醒!

    " n3 U$ a$ N, ]6 w! w

    该用户从未签到

    7#
    发表于 2020-8-18 16:43 | 只看该作者
    hthjgjkkl 发表于 2020-08-18 14:55:21# X+ b& R! K$ _& }
    你的意思是不是在执行pattern2();的过程中,突然来了中断,中断按键扫描的结果是F=1;但是中断退出后你想直接执行pattern1();但是程序还是会把pattern2();执行完才会执行pattern1();导致1的任务被立即执行,产生了问题,是这样吧!0 X+ ?* P0 T, b" f/ E% n

    6 x2 y% i5 J+ T7 |如果是这样,你需要将pattern1();直接放到中断中去执行,但是要确保它不会占用太长时间,尤其是delay肯定是不能有的。其实我们把这种任务叫做“刹车”任务,有危险就要刹车,车就要立即停止,所有其它任务都要靠边儿站,这样才不会发生交通事故。
    7 l9 S( H. ?8 ^7 p/ \( ?) e/ [* t& w6 i& X& G1 {$ T
    你还可以通过引入OS来尽可能保证单核MCU的资源尽可能不被delay这种耗时间的任务占用不必要的时间,
    9 ~( ^* @% n4 \& i$ g2 Q同时,也可以通过给任务排版优先级来解决任务排序问题,但是以你目前的能力,不建议立即引入,再多写写代码,多看看代码吧。9 u) m, |; r% i; ?' T" k6 g. A( i
    另外,如果你是多核的mcu,可以让不同内核做不同的事情,也能解决你的问题,这个不太符合你的情况。
    4 b( S$ T  v. E/ i1 J

    ; r* f- q7 l; J" D" K6 A+ J这个详细
    8 V, n# y# |9 W! ^

    “来自电巢APP”

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

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-7-22 03:08 , Processed in 0.125000 second(s), 27 queries , Gzip On.

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

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

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