SEGMENT: ?PR?_IRCVSTR?TEXT1-----被调用的程序段 CALLER1: ?PR?DISPLAY_INTER?TEXT1-----调用的子函数1 CALLER2: ?PR?TIME0?TEXT1-----调用的子函数2 由于调用的子函数2是中断服务程序,因此可能出现的情况是: 当Display_Inter调用IRCVSTR时,程序在IRCVSTR中执行,此时发生中断Time0,由于中断服务函数中再次调用IRCVSTR,因此发生重入函数调用. Keil通常不支持重入,但是也可以用,大概是reent...什么的关键字,而且需要手工设置重入堆栈,很复杂,这里不好说清楚.
以前曾经碰到过类似问题,还是尽量避免重入函数的好. 才疏学浅,一点小意见,仅供参考. |