找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 495|回复: 11
打印 上一主题 下一主题
收起左侧

OLED刷新时,执行IO口中断函数,造成卡死,什么原因,如何解决

[复制链接]
跳转到指定楼层
楼主
ID:709761 发表于 2025-6-7 17:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 李冬 于 2025-6-7 18:00 编辑
  1. void common_isr() interrupt 13
  2. {

  3.         P3INTF = 0x00;

  4.            // 等待按键释放或达到长按时间
  5.             while(a3 == 0)
  6.             {
  7.                delay_ms(1);
  8.                
  9.                 if(++press_time>=1000)

  10.                  {
  11.                    press_time=0;
  12.                      
  13.                     if(kg==0)
  14.                   {
  15.                    kg=1;//下次开机标志位
  16.                                                                         OLED_Clear();//清屏
  17.                                                                         //显示 关机
  18.                                                                         OLED_ShowCHinese(48,2,51);//
  19.                                                                         OLED_ShowCHinese(64,2,52);//
  20. //                                                                        delay_ms(1000);
  21.                    beep(1,300); //长响
  22.                   OLED_Clear();//清屏
  23.                    ES  = 0;    //关闭串口中断
  24.                                                                   UART1_SendString("关机");        //查询方式发送
  25.          
  26.                                                                         PD = 1;         //进入休眠 复位键唤醒
  27.                                                                         _nop_();
  28.                                                                         _nop_();
  29.                                                                         _nop_();
  30.                                                                         _nop_();
  31.                                                                         _nop_();
  32.                                                                         _nop_();
  33.                  }
  34.                                                           else
  35.                   {
  36.                   
  37.                                                                         OLED_Clear();//清屏
  38.                                                                         //显示 开机
  39.                                                                         OLED_ShowCHinese(48,2,53);//
  40.                                                                         OLED_ShowCHinese(64,2,54);//
  41. //                                                                        delay_ms(1000);
  42.                    beep(1,300); //长响
  43.                   OLED_Clear();//清屏
  44.                    ES  = 0;    //关闭串口中断
  45.                                                                   UART1_SendString("开机");        //查询方式发送

  46.                                                             IAP_CONTR |= 0x60; //软复位
  47.                  
  48.                     }

  49.                  }
  50.               }

  51.                                         if(press_time <1000)
  52.                                         {
  53.                                          
  54.                                                         press_time = 0;  

  55.                                                          cd = 1;   
  56.                                         }
  57.                                          
  58.   

  59. }
复制代码
长按开关机,短按CD=1,主程序里判断CD,实现其他功能。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1143567 发表于 2025-6-9 01:17 来自触屏版 | 只看该作者
中断里那么多delay,你也是个人才
回复

使用道具 举报

板凳
ID:781832 发表于 2025-6-9 10:00 | 只看该作者
刷新时 关闭中断
回复

使用道具 举报

地板
ID:996773 发表于 2025-6-9 10:57 | 只看该作者
qiuqiu12138 发表于 2025-6-9 01:17
中断里那么多delay,你也是个人才

你也不看看楼主八百多提问都是些啥,楼主就是个ai,去年也问过oled刷新清屏问题,前年也问过,
到2026年他还会问oled等等字符乱码问题。它也不会反馈你的回答,就当笑话看看吧
回复

使用道具 举报

5#
ID:108361 发表于 2025-6-9 15:00 | 只看该作者
hi等你 发表于 2025-6-9 10:57
你也不看看楼主八百多提问都是些啥,楼主就是个ai,去年也问过oled刷新清屏问题,前年也问过,
到2026年 ...

刷这些问题有啥意义?混积分也不能变现啊
回复

使用道具 举报

6#
ID:1153248 发表于 2025-6-10 00:18 | 只看该作者
中断处理时间过长,先暂时屏蔽 OLED 刷新或中断处理,单独测试两者功能是否正常
回复

使用道具 举报

7#
ID:996773 发表于 2025-6-10 08:56 | 只看该作者
powerdruy 发表于 2025-6-9 15:00
刷这些问题有啥意义?混积分也不能变现啊

就是个ai或是个虚拟人,在矿石收音机论坛也有它一样名字是李冬,它从来也不会有实质性的制作和作品的
图发出来,只是随机扔一个弱智的问题让大家解答,它也不会和人一样和大家沟通,可能回答的人中间也有
ai,估计是为了流量,为了回帖数,就怕每天发这些毫无学习价值的代码和错误的图会误导真正想学习的人
回复

使用道具 举报

8#
ID:69038 发表于 2025-6-10 09:33 | 只看该作者
hi等你 发表于 2025-6-9 10:57
你也不看看楼主八百多提问都是些啥,楼主就是个ai,去年也问过oled刷新清屏问题,前年也问过,
到2026年 ...

我很怀疑,你最开始发的贴,并不是ai,而是另外的字母
回复

使用道具 举报

9#
ID:709761 发表于 2025-6-10 15:41 | 只看该作者
为什么大家都不尊重,爱学习的人,本人求知欲比较强,遇到问题并不是不管不问,而是想办法解决,为什么不能理解我
回复

使用道具 举报

10#
ID:709761 发表于 2025-6-10 15:42 | 只看该作者
hi等你 发表于 2025-6-10 08:56
就是个ai或是个虚拟人,在矿石收音机论坛也有它一样名字是李冬,它从来也不会有实质性的制作和作品的
图 ...

你的回帖有意义吗
回复

使用道具 举报

11#
ID:1152237 发表于 2025-6-10 19:42 | 只看该作者
中断是快速处理的,你怎么加了delay,不能长时间占用呀
回复

使用道具 举报

12#
ID:709761 发表于 2025-6-26 17:31 | 只看该作者
找到原因了,使用硬件IIC驱动OLED时,不能被中断打断。驱动OLED前先关闭总中断。
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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