No.42795 作者:a872156 邮件:a872156@yahoo.com.tw ID:14542 登陆:3次 文章数:4篇 最后登陆IP:140.121.136.117 最后登陆:2003/9/27 10:16:55 注册:2003/8/22 21:16:34 财富:118 发帖时间:2003/9/25 23:36:10 发贴者IP:61.58.86.198 标题:a872156:ucos中斷問題 摘要:No.42795ucos中斷問題 我從ucos的網站下載到johnxliu的port,後來在電腦上RUN的時候出現了問題(編譯都過了,只是模擬的螢幕不會出現如example跑出亂數的畫面),後來johnxliu寄給我一份新的版本,我RUN起來以後也都沒問題了,我用johnxliu的port也都可以去跑以些自己寫的TASK,但是後來當我寫到中斷的時候卻發生了問題。 我用timer1去跑時間中斷,但是我是用mode 2自動載入的方式,所以很快的就會再發生中斷,我在中斷函示中依書本的指示在進入和離開的時候加上兩個函示OSIntEnter();OSIntExit(); 但是很快的程序就崩潰了,我指細的去研究後發現問題出在OSIntExit();裡面有這幾行, #pragma ASM CLR EA MOV SP, SaveSP #pragma ENDASM 其中MOV SP, SaveSP的SaveSP是0所以去跟改的SP上的堆疊結果程序就崩潰了,後來我仿照johnxliuISRTICK的的程式去撰寫加上了 if(OSIntNesting==1) { #pragma ASM PUSH IE CLR EA MOV SaveSP, SP #pragma ENDASM OSTCBCur-> OSTCBStkPtr=C_XBP; 和 if(OSIntNesting==0) { EA=0; C_XBP=OSTCBCur-> OSTCBStkPtr; #pragma ASM MOV ......
>>返回讨论的主题
|