智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 5680|回复: 6
打印 上一主题 下一主题

[其他] 调试的时候Illegal BP是怎么回事?

[复制链接]

14

主题

161

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1382
QQ
威望
406
贡献
768
兑换币
10
注册时间
2009-9-4
在线时间
104 小时
跳转到指定楼层
1#
发表于 2009-12-1 13:58:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我调了一个定义在另一个文件里的函数就出现这个问题了,
大家有遇到过吗?怎么解决的啊?

21

主题

1019

帖子

0

精华

常驻嘉宾

我爱雯婕

Rank: 8Rank: 8

积分
4657
威望
2223
贡献
1682
兑换币
4
注册时间
2009-3-4
在线时间
376 小时
2#
发表于 2009-12-7 13:45:12 | 只看该作者
回复 1# librae8226
不知所云,楼主最好讲的详细一点,有代码最好
回复 支持 反对

使用道具 举报

14

主题

161

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1382
QQ
威望
406
贡献
768
兑换币
10
注册时间
2009-9-4
在线时间
104 小时
3#
 楼主| 发表于 2009-12-7 18:36:49 | 只看该作者
回复 2# chenrunshe_007

这是main.c代码(for(;;)里主要实现发送图像功能):

  1. #include "includes.h"
  2. #pragma CODE_SEG DEFAULT
  3. void main(void)
  4. {
  5.     /* put your own code here */
  6.     int i, j;
  7.    
  8.     DisableInterrupts;
  9.     SetBusCLK_48M();
  10.     TimerInit();
  11.     Port_Init();
  12.     PWM_Init();
  13.     SCI_Init();
  14.     EnableInterrupts;
  15.     for(;;)  
  16.     {
  17.         //Send Image
  18.         if( flag == 1 )
  19.         {
  20.             DisableInterrupts;
  21.             TFLG1 = 0x00;
  22.             flag = 0;
  23.             ImageBinarize();
  24.             for( i = 0; i < ROW_VALUE; i++ )
  25.             {
  26.                 PORTA_PA7 = !PORTA_PA7;
  27.                 for( j = 0; j < COLUMN_VALUE; j++ )
  28.                 {
  29.                     if( buff_b[i][j] == 1 )
  30.                         uart_putchar('1');
  31.                     else
  32.                         uart_putchar('0');
  33.                 }
  34.                 uart_putchar('\n');
  35.             }
  36.             uart_putchar('\n');
  37.         }
  38.         PORTA_PA1 = !PORTA_PA1;
  39.         TFLG1 = 0x0F;
  40.         EnableInterrupts;
  41.         //Send Complete
  42.     }
  43.     /* loop forever */
  44.     /* please make sure that you never leave main */
  45. }
复制代码


这是ImageProcess.c中的发送图像代码:

  1. #include "includes.h"

  2. // Illegal BP while debugging??
  3. void SendImage(void)
  4. {
  5.     int i,j;
  6.     int servflag = 3;
  7.     if( flag )            
  8.     {
  9.         DisableInterrupts;
  10.         TFLG1 = 0x00;
  11.         flag = 0;
  12.         BinarizeImage();
  13.         for( i = 0; i < ROW_VALUE; i++ )
  14.         {  
  15.             PORTA_PA7 = !PORTA_PA7;
  16.             for( j = 0; j < COLUMN_VALUE; j++ )
  17.             {
  18.                 if( buff_b[i][j] == 1 )
  19.                     uart_putchar('1');
  20.                 else
  21.                     uart_putchar('0');
  22.             }
  23.             uart_putchar(0x0a);
  24.             uart_putchar(0x0d);
  25.         }
  26.     }
  27.     TFLG1 = 0x0F;
  28.     EnableInterrupts;
  29. }
复制代码


如图:
全速执行后停止了:


调试里的command窗口

command里的消息


问题在void SendImage(void)这个函数上,也就是说,如果我把函数内容写到main.c的for(;;)里,就可以实现发送图像,但是如果我把函数单独写到ImageProcess.c这个文件里,再在主函数里调,在调试的时候全速执行就会自己停止,同时出现Illegal BP这个提示。
是哪里出了问题?谢谢~

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

14

主题

161

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1382
QQ
威望
406
贡献
768
兑换币
10
注册时间
2009-9-4
在线时间
104 小时
4#
 楼主| 发表于 2009-12-7 18:39:26 | 只看该作者
对了,再补充一点,我在其他文件里同样写了别的函数,像模块初始化这些,调用的时候都没问题,可是一调用这个SendImage()就出问题……
回复 支持 反对

使用道具 举报

21

主题

1019

帖子

0

精华

常驻嘉宾

我爱雯婕

Rank: 8Rank: 8

积分
4657
威望
2223
贡献
1682
兑换币
4
注册时间
2009-3-4
在线时间
376 小时
5#
发表于 2009-12-8 13:56:18 | 只看该作者
回复 4# librae8226
大哥,你没有把void SendImage(void)这个函数的头文件装载到Main.c中不出错才怪
两个方法:
1.把你的ImageProcess.c改为ImageProcess.h,然后在Main.c开始那里加上 #include "ImageProcess.h",要注意的是ImageProcess.h文件一定要和Main.c保存在同一个文件夹(貌似在工程的窗口那里有include文件夹,你把ImageProcess.h拉进去就行了,没有就算了,我也记得不是很清楚)。
2.如果你不想把ImageProcess.c改成ImageProcess.h也行,但是要新建一个ImageProcess.h,并在里面写好跟ImgaeProcess.c对应的接口函数(faint!久不看我也忘记接口函数怎么写了,你可以参考一下论坛里的龙丘的例程或者whut_wj的三种测速的程序,我记得上面写有),然后也是同样在在Main.c开始那里加上 #include "ImageProcess.h"。

我之前遇到的情况就是这样解决的,不知道放在你那里得不得,你试试,不得再说
回复 支持 反对

使用道具 举报

14

主题

929

帖子

1

精华

功勋会员

WJ

Rank: 10Rank: 10Rank: 10

积分
6304

特殊贡献奖章

威望
1456
贡献
4674
兑换币
17
注册时间
2008-4-6
在线时间
87 小时
6#
发表于 2009-12-8 19:08:54 | 只看该作者
改为内联函数。
回复 支持 反对

使用道具 举报

14

主题

161

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1382
QQ
威望
406
贡献
768
兑换币
10
注册时间
2009-9-4
在线时间
104 小时
7#
 楼主| 发表于 2009-12-8 19:30:02 | 只看该作者
噢,谢谢,我再研究研究~
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-22 06:50 , Processed in 0.303846 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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