手电大家谈-手电筒爱好者之家

 找回密码
 注册成为会员,享受更多功能。

QQ登录

只需一步,快速开始

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: 阿甲

[电子电路] 请教各位老师,STM8中断执行后不能返回

[复制链接]
  • TA的每日心情
    开心
    2016-12-21 15:48
  • 签到天数: 11 天

    [LV.3]偶尔看看II

     楼主| 发表于 2023-2-7 23:51 来自手机 | 显示全部楼层
    L555T_007 发表于 2023-2-7 23:44
    其实功能要求就是

    上电先各通道和关窗输出自检然后关闭

    思路清晰!有点怀疑你就是上次帮我写那个后面被禁言的兄弟!
    每一步都说对了
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-11-26 08:47
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2023-2-8 00:09 来自手机 | 显示全部楼层
    if(flag倒车)

      pd=0x00; //  倒车[关]

    else if(flag左)

    pc=0xa0;// 左,

    else if(flag右)

    pc=0x90;// 右

    else

    pc=table[idxSel];


    idxSel就是按键切换选择,每次按下++ 循环 0-4


    你要做好按键和各输入的去抖处理,查询法即可无需各路中断。

    点评

    您这个我要慢慢消化,有点超出目前的学习了。比如变量定义这些,有时间的话全部帮我写下嘛,不同方式学习,我觉得我这种毫无基础的人学一点都高兴  详情 回复 发表于 2023-2-8 15:30
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-5-3 20:53
  • 签到天数: 332 天

    [LV.8]以坛为家I

    发表于 2023-2-8 15:14 来自手机 | 显示全部楼层
    不是esp32无法验证有心无力,延时函数会被编译器优化,中断不能用延时会重复进中断甚至锁死

    点评

    是有这种说法,有人说中断可以只作为一个开关来打开主函数中的一个延时处理,目前还不会这种。您看我现在会的基本上就是一个乒乓开关  详情 回复 发表于 2023-2-8 15:35
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-5-3 20:53
  • 签到天数: 332 天

    [LV.8]以坛为家I

    发表于 2023-2-8 15:16 来自手机 | 显示全部楼层
    其实网上就有按键处理的例程何必自己那么辛苦想?

    点评

    按键其实我会一点了啊,现在问题是中断返回,以及重复触发(确实需要重复触发)的问题以及中断中延迟的问题  详情 回复 发表于 2023-2-8 15:32
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-12-21 15:48
  • 签到天数: 11 天

    [LV.3]偶尔看看II

     楼主| 发表于 2023-2-8 15:30 来自手机 | 显示全部楼层
    L555T_007 发表于 2023-2-8 00:09
    if(flag倒车)

      pd=0x00; //  倒车[关]

    您这个我要慢慢消化,有点超出目前的学习了。比如变量定义这些,有时间的话全部帮我写下嘛,不同方式学习,我觉得我这种毫无基础的人学一点都高兴
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-12-21 15:48
  • 签到天数: 11 天

    [LV.3]偶尔看看II

     楼主| 发表于 2023-2-8 15:32 来自手机 | 显示全部楼层
    捱多年 发表于 2023-2-8 15:16
    其实网上就有按键处理的例程何必自己那么辛苦想?

    按键其实我会一点了啊,现在问题是中断返回,以及重复触发(确实需要重复触发)的问题以及中断中延迟的问题
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-12-21 15:48
  • 签到天数: 11 天

    [LV.3]偶尔看看II

     楼主| 发表于 2023-2-8 15:35 来自手机 | 显示全部楼层
    捱多年 发表于 2023-2-8 15:14
    不是esp32无法验证有心无力,延时函数会被编译器优化,中断不能用延时会重复进中断甚至锁死 ...

    是有这种说法,有人说中断可以只作为一个开关来打开主函数中的一个延时处理,目前还不会这种。您看我现在会的基本上就是一个乒乓开关

    点评

    先定义个全局变量volatil int keydown=0; 在中断只要keydown=1;其他啥都不要 添加 int readkey() { static int key=0; static int time=0;/进入次数 if(keydown) { 延时10 读键盘 if(键盘按下){key+=1;time=0;  详情 回复 发表于 2023-2-8 16:43
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-5-3 20:53
  • 签到天数: 332 天

    [LV.8]以坛为家I

    发表于 2023-2-8 16:43 来自手机 | 显示全部楼层
    阿甲 发表于 2023-2-8 15:35
    是有这种说法,有人说中断可以只作为一个开关来打开主函数中的一个延时处理,目前还不会这种。您看我现在 ...

    先定义个全局变量volatil int keydown=0;
    在中断只要keydown=1;其他啥都不要
    添加
    int readkey()
    {
    static int key=0;
    static int time=0;/进入次数
    if(keydown)
    {
      延时10
      读键盘
      if(键盘按下){key+=1;time=0;}
      keydown=0;
    }
    if(time<1000)time++;
    return key;
    }
    然后主循环调用readkey()
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-5-3 20:53
  • 签到天数: 332 天

    [LV.8]以坛为家I

    发表于 2023-2-8 16:48 来自手机 | 显示全部楼层
    漏了处理key了key+=1那里添加if(key>最大键数)key=1
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-5-3 20:53
  • 签到天数: 332 天

    [LV.8]以坛为家I

    发表于 2023-2-8 16:52 来自手机 | 显示全部楼层
    额还得添加个变量应付无键按下的返回值
    回复

    使用道具 举报

  • TA的每日心情
    擦汗
    2015-1-15 14:39
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2023-2-8 19:22 | 显示全部楼层
    听说 chatgpt AI软件 可以帮人写代码,楼主可以试试
    回复

    使用道具 举报

    本版积分规则

    小黑屋|手机版|Archiver|论坛自带搜索|下载论坛app|手电大家谈-手电筒爱好者之家 ( 备案序号:鲁ICP备05002565号 )
    以上言论纯属个人观点,与手电大家谈立场无关。
    最佳浏览模式:1920*1080


    GMT+8, 2024-11-1 06:48 , Processed in 0.183621 second(s), 43 queries , Gzip On.

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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