[ZLG-MCU] 进入FaultISR是什么地方出问题了??

[复制链接]
4582|14
 楼主| lizhaohu 发表于 2008-4-16 10:59 | 显示全部楼层 |阅读模式
<br />用串口助手调试Easy615的试验4.2_Uart_Driver(usart驱动试验)出现,程序跑到FaultISR中断里去了<br /><br />请问是怎么回事啊??
 楼主| lizhaohu 发表于 2008-4-16 14:54 | 显示全部楼层

usart驱动试验问题

用超级终端能正确运行,用串口助手一个一个的发送没有问题,两个两个的发<br /><br />送也没有问题,直到5个5个的发送时当发送到60多个的时候就跳到FaultISR中<br /><br />断当中了。<br /><br />是什么问题啊,找了很久也没有找到。
 楼主| lizhaohu 发表于 2008-4-16 15:25 | 显示全部楼层

当把该行禁止了之后 可以了

************************************************************************************<br />**&nbsp;Function&nbsp;name:&nbsp;Uart0Send<br />**&nbsp;Descriptions:&nbsp;&nbsp;发送多个字节数据<br />**&nbsp;Input:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Buffer:发送数据存储位置<br />**&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NByte:发送数据个数<br />**&nbsp;Output:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无<br />**&nbsp;Created&nbsp;by:&nbsp;&nbsp;&nbsp;&nbsp;Zhou&nbsp;Shaogang&nbsp;<br />**&nbsp;Created&nbsp;Date:&nbsp;&nbsp;2006-11-18<br />**----------------------------------------------------------------------------------<br />**&nbsp;Modified&nbsp;by:<br />**&nbsp;Modified&nbsp;Date:&nbsp;<br />**----------------------------------------------------------------------------------<br />************************************************************************************/<br />void&nbsp;Uart0Send(uint8&nbsp;*Buffer,&nbsp;uint16&nbsp;NByte)<br />{<br />&nbsp;&nbsp;while(NByte)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;UARTSpaceAvail(UART0_BASE)&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UARTCharNonBlockingPut(UART0_BASE,&nbsp;*Buffer++);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NByte--;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br /><br />&nbsp;//&nbsp;while(&nbsp;!UARTTraFifoEmp(UART0_BASE)&nbsp;);//改动的部分<br />为什么这样改动之后就可以了呢,还没有想通阿!!<br />}
 楼主| lizhaohu 发表于 2008-4-18 08:54 | 显示全部楼层

大家都没有遇到这个问题吗??

&nbsp;<br /><br />你们都都没有遇到这个问题哦!!
zlgmcu 发表于 2008-4-18 08:57 | 显示全部楼层

您是不是用KEIL编译的?

如果用D版的Keil编译就有可能出现这个问题。
 楼主| lizhaohu 发表于 2008-4-19 17:19 | 显示全部楼层

不好说啊

<br />不啊 我用的是IAR<br /><br />也不知是怎么的,东改西改的又没有那问题了<br />
jack501 发表于 2008-4-20 13:58 | 显示全部楼层

我也出现同样的问题

  
jack501 发表于 2008-4-20 23:02 | 显示全部楼层

UART0_REC_QUEUE_LEN ?

&nbsp;&nbsp;Uart0_Rec_Queue[UART0_REC_QUEUE_LEN]接收队列的UART0_REC_QUEUE_LEN在哪里赋值的?&nbsp;没有找到?&nbsp;
jack501 发表于 2008-4-21 11:10 | 显示全部楼层

UART0_REC_QUEUE_LEN在哪里赋值的?

Uart0_Rec_Queue[UART0_REC_QUEUE_LEN]接收队列的UART0_REC_QUEUE_LEN在哪里赋值的?&nbsp;
jack501 发表于 2008-4-21 13:33 | 显示全部楼层

UART0_REC_QUEUE_LEN 300

修改:<br />UART0_REC_QUEUE_LEN&nbsp;&nbsp;&nbsp;300&nbsp;&nbsp;原来100<br />#define&nbsp;STACK_SIZE&nbsp;&nbsp;&nbsp;&nbsp;128&nbsp;&nbsp;&nbsp;原来64<br /><br />发送2k字符还没有出现错误
zlgmcu 发表于 2008-4-22 08:46 | 显示全部楼层

修改STACK_SIZE的值很关键

(zlgmcu_wdx)
gdpiao 发表于 2008-4-22 12:29 | 显示全部楼层

RE

与LPC系列不同,数据越界也会进入FaultISR
 楼主| lizhaohu 发表于 2008-4-22 19:30 | 显示全部楼层

回复:jack501

<br />Uart0_Rec_Queue[UART0_REC_QUEUE_LEN]接收队列的UART0_REC_QUEUE_LEN在哪里赋值的?<br /><br />答:UART0_REC_QUEUE_LEN是宏定义了的如:<br />“ #define&nbsp;UART0_REC_QUEUE_LEN&nbsp;&nbsp;&nbsp;300&nbsp;&nbsp;&nbsp;”                 <br />   
mohanwei 发表于 2008-4-22 20:04 | 显示全部楼层

睁眼说瞎话吧……

zlgmcu&nbsp;发表于&nbsp;2008-4-18&nbsp;08:57&nbsp;ZLG-MCU&nbsp;&nbsp;←返回版面&nbsp;&nbsp;按此察看该网友的资料&nbsp;按此把**加入收藏夹&nbsp;按此编辑本帖<br /><br />5楼:&nbsp;您是不是用KEIL编译的?<br /><br />如果用D版的Keil编译就有可能出现这个问题。
 楼主| lizhaohu 发表于 2008-4-28 17:28 | 显示全部楼层

不是用的Keil!!我没有必要骗人啊

<br />回复:&nbsp;mohanwei&nbsp;<br />&nbsp;&nbsp;&nbsp;我没有“睁眼说瞎话吧……”!!<br />的确!!我用的是IAR,没有用Keil!!<br /><br />可能后来把变量减少后程序不会进入该中断了,&nbsp;可能就是变量定义过多过大的影响吧!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

27

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部