天嵌 ARM开发社区

 找回密码
 注册
查看: 4162|回复: 13

Dabort exception问题

[复制链接]
dfd1r 发表于 2010-7-18 11:27:29 | 显示全部楼层 |阅读模式
我在主函数中有如下循环
  1.           while(1)
  2.           {
  3.                 //if(last_select==5&&select==5)
  4.                 //{
  5.                 //        select=10;
  6.                 //}
  7.                 //else
  8.                 //{
  9.                         switch(select)
  10.                         {
  11.                                 case 0:Time_Show();break;
  12.                                 case 1:Alarm_Sing();break;
  13.                                 case 2:Mosquito_Drive();Delay(900);break;
  14.                                 case 3:{
  15.                                                IsMain=0;
  16.            
  17.                                                    Lcd_ClearScr(0);
  18.                                                    for(i=0;i<5;i++)
  19.                                                 {
  20.                                                         Disp_Char(65+40*i,100,&dami_4040[600+200*i],40,40,(0<<11|0<<5|31),0);
  21.                                                 }
  22.            
  23.                                                    rRTCCON&=~0x01;
  24.                                                  rRTCALM&=~0x7f;
  25.                                                  addr=0;
  26.                                                  while(1)
  27.                                                   {
  28.                                                         temp1=song2[addr++];
  29.                                                         temp2=song2[addr++];
  30.                                                         switch(temp1){
  31.                                                         case 01:freq=260;break;
  32.                                                         case 02:freq=294;break;
  33.                                                         case 03:freq=328;break;
  34.                                                         case 04:freq=347;break;
  35.                                                         case 05:freq=390;break;
  36.                                                         case 06:freq=438;break;
  37.                                                         case 07:freq=490;break;
  38.                                
  39.                                                         case 11:freq=520;break;
  40.                                                         case 12:freq=581;break;
  41.                                                         case 13:freq=657;break;
  42.                                                         case 14:freq=694;break;
  43.                                                         case 15:freq=781;break;
  44.                                                         case 16:freq=892;break;
  45.                                                         case 17:freq=1000;break;
  46.                                
  47.                                                         case 21:freq=1041;break;
  48.                                                         case 22:freq=1190;break;
  49.                                                         case 23:freq=1315;break;
  50.                                                         case 24:freq=1388;break;
  51.                                                         case 25:freq=1562;break;
  52.                                                         case 26:freq=1785;break;
  53.                                                         case 27:freq=1923;break;
  54.                                                         default:freq=0xffff;break;
  55.                                                         }
  56.                                                 Buzzer_Freq_Set(freq);
  57.                                                 if(temp2!=38)Delay(192*temp2);
  58.                                                 else break;
  59.                                                 }
  60.                                         rGPBCON&=~(0x3);
  61.                                         rGPBCON|=0x1;
  62.                                         select=5;
  63.                                         break;
  64.                                         }
  65.                                 case 4:Picture_Scan();break;
  66.                                 case 5:rGPBCON&=~(0x3);rGPBCON|=0x1;Main_Menu_Show();Delay(900);break;
  67.                         //        default:Error_Report();
  68.                         }
复制代码
该循环中的select用触摸屏中断控制
其他功能函数正常,只有当选择case 3时,会出现Dabort exception问题
另外,我曾经将case 3中的代码做成函数,但函数返回不了。
大家帮忙看看是什么问题,谢谢帮忙
 楼主| dfd1r 发表于 2010-7-18 14:02:42 | 显示全部楼层
2# machoe


把工程加上来吧,请大家给看看

本帖子中包含更多资源

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

×
回复

使用道具 举报

 楼主| dfd1r 发表于 2010-7-18 16:27:21 | 显示全部楼层
4# machoe


谢谢
回复

使用道具 举报

 楼主| dfd1r 发表于 2010-7-19 16:15:24 | 显示全部楼层
本帖最后由 dfd1r 于 2010-7-19 16:16 编辑

7# machoe


7# machoe


执行是可以,但是返回不到主菜单的那个页面(就是开机的那个画面)
IsMain主要是判断当前显示的是主页面还是子页面,主要在function.c中的touch_irq中断服务函数中使用
把case 3中的部分做成函数,新的工程见附件,看起来更简洁一些,希望帮忙看一下,为什么
Dami_Sing函数不返回。麻烦帮忙再给看一下

本帖子中包含更多资源

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

×
回复

使用道具 举报

 楼主| dfd1r 发表于 2010-7-19 21:51:05 | 显示全部楼层
谢谢machoe,真是大神
按你说的
.
不回返,我看是下面的if else语句问题, IF判断TEMP2,而TEMP==38时才返回

确实是我粗心的把temp1写成temp2了,所以只要把判断语句里德temp2改成temp1就好了,看来以后要仔细些
回复

使用道具 举报

 楼主| dfd1r 发表于 2010-7-20 14:43:54 | 显示全部楼层
IsMain修不修改没关系,虽然确实两边声明的不一样
这个就是自己学着把一些小程序组合起来,没有特别用途
回复

使用道具 举报

pzxsoso 发表于 2011-4-13 15:16:44 | 显示全部楼层
学习一下!
回复

使用道具 举报

化蝶 发表于 2011-10-6 14:56:55 | 显示全部楼层
[img][/img]
回复

使用道具 举报

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

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-6-16 17:18 , Processed in 2.036660 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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