[ZLG-ARM] 求助:使用ucos中PC_DispChar函数的困惑!

[复制链接]
3980|2
 楼主| chenchendf 发表于 2008-4-20 11:57 | 显示全部楼层 |阅读模式
我这段时间正在学习ucos,在使用到显示字符函数PC_DispChar时总是报错,其中的DISP_BASE不知道取什么值?<br />#define&nbsp;&nbsp;DISP_BASE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xB800&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Base&nbsp;segment&nbsp;of&nbsp;display&nbsp;(0xB800=VGA,&nbsp;0xB000=Mono)&nbsp;&nbsp;*/<br />我的一个测试代码如下,麻烦各位帮我看一下,多谢:<br />#include&nbsp;&nbsp;&nbsp;&nbsp;&ltstdio.h&gt<br />#include&nbsp;&nbsp;&nbsp;&nbsp;&ltstring.h&gt<br />#include&nbsp;&nbsp;&nbsp;&nbsp;&ltctype.h&gt<br />#include&nbsp;&nbsp;&nbsp;&nbsp;&ltstdlib.h&gt<br />#include&nbsp;&nbsp;&nbsp;&nbsp;&ltconio.h&gt<br />#include&nbsp;&nbsp;&nbsp;&nbsp;&ltsetjmp.h&gt<br />#define&nbsp;MK_FP(seg,ofs)&nbsp;&nbsp;&nbsp;&nbsp;((void&nbsp;&nbsp;*)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(((unsigned&nbsp;long)(seg)&nbsp;&lt&lt&nbsp;16)&nbsp;|&nbsp;(unsigned)(ofs)))<br /><br /><br />#define&nbsp;&nbsp;DISP_BASE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xB800&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Base&nbsp;segment&nbsp;of&nbsp;display&nbsp;(0xB800=VGA,&nbsp;0xB000=Mono)&nbsp;&nbsp;*/<br />#define&nbsp;&nbsp;DISP_MAX_X&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;80&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Maximum&nbsp;number&nbsp;of&nbsp;columns&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />#define&nbsp;&nbsp;DISP_MAX_Y&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Maximum&nbsp;number&nbsp;of&nbsp;rows&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br /><br />#define&nbsp;DISP_FGND_WHITE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x0F<br /><br />#define&nbsp;DISP_BGND_BLACK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00<br /><br /><br />typedef&nbsp;unsigned&nbsp;char&nbsp;&nbsp;INT8U;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Unsigned&nbsp;&nbsp;8&nbsp;bit&nbsp;quantity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />typedef&nbsp;signed&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;INT8S;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Signed&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;bit&nbsp;quantity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />typedef&nbsp;unsigned&nbsp;int&nbsp;&nbsp;&nbsp;INT16U;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Unsigned&nbsp;16&nbsp;bit&nbsp;quantity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />typedef&nbsp;signed&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;INT16S;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Signed&nbsp;&nbsp;&nbsp;16&nbsp;bit&nbsp;quantity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />typedef&nbsp;unsigned&nbsp;long&nbsp;&nbsp;INT32U;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Unsigned&nbsp;32&nbsp;bit&nbsp;quantity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />typedef&nbsp;signed&nbsp;&nbsp;&nbsp;long&nbsp;&nbsp;INT32S;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Signed&nbsp;&nbsp;&nbsp;32&nbsp;bit&nbsp;quantity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br /><br />void&nbsp;PC_DispChar&nbsp;(INT8U&nbsp;x,&nbsp;INT8U&nbsp;y,&nbsp;INT8U&nbsp;c,&nbsp;INT8U&nbsp;color);<br /><br />void&nbsp;&nbsp;main&nbsp;(void)<br />{<br /><br />char&nbsp;*&nbsp;s=&quot;M&quot;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />PC_DispChar(0,0,*s,DISP_BGND_BLACK+DISP_FGND_WHITE);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />void&nbsp;PC_DispChar&nbsp;(INT8U&nbsp;x,&nbsp;INT8U&nbsp;y,&nbsp;INT8U&nbsp;c,&nbsp;INT8U&nbsp;color)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;INT8U&nbsp;&nbsp;&nbsp;&nbsp;*pscr;<br />&nbsp;&nbsp;&nbsp;&nbsp;INT16U&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;offset;<br />&nbsp;&nbsp;&nbsp;&nbsp;offset&nbsp;&nbsp;=&nbsp;(INT16U)y&nbsp;*&nbsp;DISP_MAX_X&nbsp;*&nbsp;2&nbsp;+&nbsp;(INT16U)x&nbsp;*&nbsp;2;&nbsp;&nbsp;/*&nbsp;Calculate&nbsp;position&nbsp;on&nbsp;the&nbsp;screen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;pscr&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;(INT8U&nbsp;&nbsp;*)MK_FP(DISP_BASE,&nbsp;offset);<br />&nbsp;&nbsp;&nbsp;&nbsp;*pscr++&nbsp;=&nbsp;c;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Put&nbsp;character&nbsp;in&nbsp;video&nbsp;RAM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;*pscr&nbsp;&nbsp;&nbsp;=&nbsp;color;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Put&nbsp;video&nbsp;attribute&nbsp;in&nbsp;video&nbsp;RAM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />}<br />编译通过了,但是在调试运行到PC_DispChar函数中的*pscr&nbsp;&nbsp;&nbsp;=&nbsp;color;&nbsp;就报以下错:<br /><br /><br /><br />DISP_BASE的取值是不是固定的,是不是跟显卡有关啊?我的显示是<br />NVIDIARIVATNT2非曲直Model&nbsp;64/Model&nbsp;64&nbsp;Pro,是不是其它的原因?大家帮帮我,谢谢!<br /><br />
 楼主| chenchendf 发表于 2008-4-20 12:00 | 显示全部楼层

如果我在TC中运行时结果却是:Null pointer assignment

  
 楼主| chenchendf 发表于 2008-4-21 21:53 | 显示全部楼层

为什么没人回答啊?

是不是大家都没碰到过,还是觉得太简单了不回答?我弄了好久了,实在没办法了!<br />如果大家有什么其他好的建议也行啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

21

帖子

0

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