OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 11774|回复: 15

再请教原子,这白屏故障是怎么产生的?

[复制链接]

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
发表于 2012-3-6 16:51:24 | 显示全部楼层 |阅读模式
     最近用 MDK 4.10 编译 调试STM32 程序时发现个奇怪故障,费了很大劲,也没有排去,故只能发帖请教原子老师了。

   利用我买的不完全板的程序,在其他板上(由于原子板只能用串口下载程序,不能直接使用LINK,所以才在别的板上编译调试)编了个图片文字显示,MP3播放等程序,编译后HEX可

达 540KB, 只要使用下面原子的ILI9320画圆函数,开机就白屏,什么也不显示?把这段画圆程序去掉,程序运行正常, 用单步 一步一步地 调试 ,程序工作就正常,画圆程序也能画出个

漂亮的大园圈,可是只要重新启动,进入初始化,就拜拜了,一片白,什么也显示不出来,我又认为是这画圆的鬼程序影响的,初始化到它那里,就白屏了,就把画圆程序放到初始化

程序的最后,可是没有运行到它,也同样白屏,好像只要有这段画圆程序,程序就根本没有运行,直接就白屏了,这是什么鬼蜮故障,只得请教原子老师了。

    下面就是那段的画圆程序,没看出它有多么鬼蜮,但是它又怎么去干那样的“坏事”呢?

void Draw_Circle(u16 x0,u16 y0,u8 r)
{
int a,b;
int di;
a=0;b=r;  
di=3-(r<<1); //判断下个点位置的标志
while(a<=b)
{
LCD_DrawPoint(x0-b,y0-a);             //3           
LCD_DrawPoint(x0+b,y0-a);             //0           
LCD_DrawPoint(x0-a,y0+b);             //1       
LCD_DrawPoint(x0-b,y0-a);             //7           
LCD_DrawPoint(x0-a,y0-b);             //2             
LCD_DrawPoint(x0+b,y0+a);             //4               
LCD_DrawPoint(x0+a,y0-b);             //5
LCD_DrawPoint(x0+a,y0+b);             //6 
LCD_DrawPoint(x0-b,y0+a);             
a++;
//使用Bresenham算法画圆     
if(di<0)di +=4*a+6;  
else
{
di+=10+4*(a-b);   
b--;
LCD_DrawPoint(x0+a,y0+b);
}
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165538
金钱
165538
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-3-6 18:25:34 | 显示全部楼层
把这段画圆程序去掉,程序运行正常, 用单步 一步一步地 调试 ,程序工作就正常,画圆程序也能画出个

漂亮的大园圈.

你都去掉了画圆程序,怎么画出一个园来的?
感觉有点矛盾.
你看看是不是LCD还没有初始化就在画圆了?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2012-3-6 21:34:36 | 显示全部楼层
回复【2楼】正点原子:
把这段画圆程序去掉,程序运行正常, 用单步 一步一步地 调试 ,程序工作就正常,画圆程序也能画出个
漂亮的大园圈.
你都去掉了画圆程序,怎么画出一个园来的?
感觉有点矛盾.
你看看是不是LCD还没有初始化就在画圆了?
---------------------------------
可能我没说明白呀,那是我用软件模拟单步调试,把你的程序移到这块板上,他有LINK调试接口,不像你那块板,只能用LINK下载程序,下载完毕,要把

LINK拔掉,才能运行程序,他那块板,可以在线模拟单步调试,我是这样一步一步地运行,运行那一段画圆程序时,把园就画出来了,这基本可以断定:

这个画圆程序没有问题,可是当你结束模拟单步调试,按复位键,再进入初始化时,就出现了白屏故障了,如果注释掉那段画圆程序,重编译,重下载,

重新启动程序,工作就正常了,不知我这一次是否说明白了?

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165538
金钱
165538
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-3-6 22:28:16 | 显示全部楼层
1,我们的代码也可以用JTAG下载,然后执行.澄清一下.看你什么代码.只要不和SWD口干涉的,都可以.
2,你这种情况,考虑是JTAG的干扰,把JTAG拔了试试.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2012-3-7 00:05:19 | 显示全部楼层
回复【4楼】正点原子:
1,我们的代码也可以用JTAG下载,然后执行.澄清一下.看你什么代码.只要不和SWD口干涉的,都可以.
2,你这种情况,考虑是JTAG的干扰,把JTAG拔了试试.
---------------------------------
       谢谢及时给予答复。

        试过,把JTAG拔去,故障依旧,只要把那段画圆程序去掉,就正常了。我心思:是HEX太大了 (450KB左右)造成程序溢出?可有的板HEX

达到1MB也没事,这块板用STM32最高版本 FLASH达到512KB,应该不会有问题吧?

       再随便请教一句,如果真是FLASH空间小了,把空间划大一点,要改动那个地方呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165538
金钱
165538
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-3-7 01:55:18 | 显示全部楼层
回复【5楼】dong:
---------------------------------
hex大小并不代表占用的flash大小.大小要从mdk编译结果看.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2012-3-7 08:44:30 | 显示全部楼层
回复【6楼】正点原子:
回复【5楼】dong:
---------------------------------
hex大小并不代表占用的flash大小.大小要从mdk编译结果看.
---------------------------------
看来没招了,又试着把那画圆程序中的3条画点程序删去(两条不行,必须是3条),就可以正常运行了,但是画的是残缺圆,圆边有缺口

好像就和程序大小有关似的,小于某个值就正常了???
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165538
金钱
165538
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-3-7 09:03:44 | 显示全部楼层
如果是这样,你把其他不相关的代码去掉,只留下画圆的,那你看能否正常?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2012-3-7 11:26:29 | 显示全部楼层
回复【8楼】正点原子:
如果是这样,你把其他不相关的代码去掉,只留下画圆的,那你看能否正常?
---------------------------------
这个没问题,不用删去整个程序,只要删去画圆其中的几条语句,就OK了。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165538
金钱
165538
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-3-7 11:54:18 | 显示全部楼层
回复【9楼】dong:
---------------------------------
排除法啊.
不删除画圆的.删除其他的.看看能不能画圆.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2012-3-7 22:08:51 | 显示全部楼层
回复【10楼】正点原子:
回复【9楼】dong:
---------------------------------
排除法啊.
不删除画圆的.删除其他的.看看能不能画圆.
---------------------------------
    试过。删去bmp图片也不会白屏,但要删的多,不如删画圆程序只几条就行,好像这画圆和显示bmp图片有什么纠结?它俩碰一块,就白屏?

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165538
金钱
165538
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-3-7 22:51:43 | 显示全部楼层
那真是比较纠结了.
你是不是开优化了?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2012-3-8 09:04:32 | 显示全部楼层
回复【12楼】正点原子:
那真是比较纠结了.
你是不是开优化了?
---------------------------------
你说的这个问题很重要,弄不好是它做的怪!这个优化我还不会呢,怎么才能优化?反正 MDK 按你 书上 说得步骤设置一下,再没动过,什么时间它自己偷

偷搞优化了呢?还请施教。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165538
金钱
165538
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-3-8 10:07:18 | 显示全部楼层
回复【13楼】dong:
---------------------------------
优化要自己设置的.
在天价头文件路径的那个界面,有个Optimization的选项,就是用来设置优化等级的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

187

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
288
金钱
288
注册时间
2011-12-14
在线时间
0 小时
 楼主| 发表于 2012-3-8 17:06:29 | 显示全部楼层
回复【14楼】正点原子:
回复【13楼】dong:
---------------------------------
优化要自己设置的.
在天价头文件路径的那个界面,有个Optimization的选项,就是用来设置优化等级的.

---------------------------------
好,去试试看,谢谢!
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2012-3-8 21:14:40 | 显示全部楼层
楼主,建议你注意一下屏的复位引脚,复位一下屏,会正常的。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-15 16:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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