OpenEdv-开源电子网

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

【STM32】一样的代码,为什么换种方式编译就不行?

[复制链接]

5

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2014-4-5
在线时间
0 小时
发表于 2014-4-5 15:22:17 | 显示全部楼层 |阅读模式
开发板:AlienTek Mini,14年买的,带的是2.8寸的屏,ILI9341。
代码最初版来自AlienTek的例程。
MDK版本:4.60.0.0

附件一个是根据原版删除不必要的代码以及修改部分自己习惯的操作方式而成。
另一个是把整个文件系统都改了,改成“51模式“,即引用头文件编译,而不进行编译文件夹等等的设置。

两个版本的代码都能闪烁LED以及点亮液晶背光,而液晶屏则只有”原版修改“版可以按计划显示(一条斜线),”完全修改“版却不能。
两者代码都是非常相似的,几乎可以说是一模一样,只是一个采用”类库“方式,而一个采用”类51“方式。

事实上我还写了另一个极简版,直接#include "STM32F10x.H",然后写各个函数操作,同样跟上面的”完全修改“版一样,只能闪烁LED以及点亮背光,屏幕显示没反应。
我问过别人,有人说可能是编译器的问题,但我觉得即然LED能正常工作,液晶不能工作,那可能不是编译器的问题。

PS:因为确认了是9341,因此直接跳过读取的步骤,我的想法是,不用读,直接写。在修改AlienTek的例程中也是把全部跟读有关的全部删除,可以正常显示。

附件:
1.原版修改————LED正常,显示正常(一条斜线)
2.完全修改————LED正常,白屏
3.极简版—————LED正常,白屏

原版修改.zip

399.99 KB, 下载次数: 207

极简版.zip

227.08 KB, 下载次数: 204

完全修改.zip

559.89 KB, 下载次数: 193

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

13

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2014-4-5
在线时间
1 小时
发表于 2014-4-5 17:25:12 | 显示全部楼层
要好好学习了
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-5 19:18:14 | 显示全部楼层
楼主,有一种方法,叫做仿真。
下图是你的极简版,仿真结果。
可以看到,都要写指令到LCD了,你的PORTB口还是这样的状态,怎么能写指令过去?
你GPIOB的初始化,没弄对!!
类似的,其他IO,你可以用仿真去查看下。


我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2014-4-5
在线时间
0 小时
 楼主| 发表于 2014-4-5 20:54:04 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
按照您说的,我修改了文件,现在仿真正常了,但依然是白屏(同样的,LED正常闪烁)。楼下贴出文件,希望原子帮帮忙。
回复 支持 反对

使用道具 举报

5

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2014-4-5
在线时间
0 小时
 楼主| 发表于 2014-4-5 20:57:44 | 显示全部楼层
下面是修改后的附件,我仿真过了,貌似是正常的样子,但依然是只有LED在那闪,液晶仍然白屏……

仿真正常但依然白屏的极简版.zip

227.8 KB, 下载次数: 200

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-6 00:05:59 | 显示全部楼层
回复【5楼】Tsiov:
---------------------------------
单步调试,看看IO状态,是不是跟着程序而改变。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2014-4-5
在线时间
0 小时
 楼主| 发表于 2014-4-6 00:38:53 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
是跟程序改变。能帮我看看具体问题出在哪吗?不胜感激!
回复 支持 反对

使用道具 举报

5

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2014-4-5
在线时间
0 小时
 楼主| 发表于 2014-4-6 01:03:35 | 显示全部楼层
研究到现在,还是没有结果。
有时候把无关的东西去掉也会白屏,比如说Jtag那个函数,貌似跟IO的操作无关的,还有系统的一些函数,比如说Sys.H,按理说能编译且没警告应该是没问题了,但就是白屏。LED不停地闪又证明IO没什么问题……
调试时看仿真的IO输出也没什么问题……
我把AlienTek的例程改到最简模式,可以运行。但放到自己那,就是”51模式“代码下,就不行了……
如果51模式行得通,会有更多人愿意买AlienTek的。所以原子帮帮忙啦,指点一下,只要让我画一个点,我就去写出一套GUI来供大家调用,如果我搞定了,一定共享到论坛中来。四楼的那个最简代码,帮我看看为什么白屏,那个代码弄好了我就明白了。
下面是AlienTek例程的最简代码,可以运行,功能是在屏幕上画两个相反的三角形,由于把扫描方向的相关函数也删除了,因此屏幕按照默认的模式在第三象限以原点为[0,0]逐次递增。

改AlienTek的最简版.zip

400.46 KB, 下载次数: 224

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-6 10:13:14 | 显示全部楼层
回复【8楼】Tsiov:
---------------------------------
对了,要禁止JTAG,才可以的,你的代码有禁止JTAG的操作么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2014-4-5
在线时间
0 小时
 楼主| 发表于 2014-4-6 10:42:41 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
可以了,就是JTAG的原因!!
非常感谢原子!!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-12 16:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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