OpenEdv-开源电子网

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

请教一下代码该怎么调试

[复制链接]

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
发表于 2017-1-16 10:09:36 | 显示全部楼层 |阅读模式
3金钱
用mini板子写了一个 IO口模拟IIC总线操作24c02的程序,编译通过了,下载代码到板子后,程序是不对的。

我主要想问下,调试这种根据时序图写的程序,有什么好的办法吗?

前段时间调LCD的驱动代码,就是一步步跑程序,看电平状态。这样有时候并不能调试出来问题在哪。。

请教大神们,程序调试有哪些小套路啊。。。现在觉得写代码真心不是事,写出来就行,后期的调试才是最痛苦的。。


最佳答案

查看完整内容[请看2#楼]

我刚开始写程序时候也不会调试,其实这种东西,你完全搞懂一个,其他的就都懂了,剩下的就是经验的问题。 比如楼主举的24c02的例子,想要调试,硬件方面,要有示波器和JLINK,这个要进行分层的话,分为驱动层(I2C)和应用层(具体想往里面写什么,读什么)。 首先楼主要学会I2C的时序,具体是什么样的,然后挂上示波器,看楼主模拟的时序跟I2C的时序对不对,不对就继续修改程序,观察时序没问题的话,就可以进行应用测试了 ...
亦余心之所善,
虽九死其犹未悔。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

344

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1280
金钱
1280
注册时间
2013-12-14
在线时间
567 小时
发表于 2017-1-16 10:09:37 | 显示全部楼层
我刚开始写程序时候也不会调试,其实这种东西,你完全搞懂一个,其他的就都懂了,剩下的就是经验的问题。

比如楼主举的24c02的例子,想要调试,硬件方面,要有示波器和JLINK,这个要进行分层的话,分为驱动层(I2C)和应用层(具体想往里面写什么,读什么)。

首先楼主要学会I2C的时序,具体是什么样的,然后挂上示波器,看楼主模拟的时序跟I2C的时序对不对,不对就继续修改程序,观察时序没问题的话,就可以进行应用测试了。

建议楼主看一下21ic的江海波大大写的《程序调试黑宝书》,里面就介绍了典型的I2C程序的调试和一些调试经验。
半导体->模拟电路->数字电路->单片机->汇编->C->操作系统->java
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
 楼主| 发表于 2017-1-16 10:27:06 | 显示全部楼层
调外设的驱动,有啥好办法吗~~~
亦余心之所善,
虽九死其犹未悔。
回复

使用道具 举报

14

主题

219

帖子

0

精华

高级会员

Rank: 4

积分
598
金钱
598
注册时间
2014-4-14
在线时间
76 小时
发表于 2017-1-16 10:35:08 | 显示全部楼层
怎么总感觉之前有人问过这个问题!!现在市面上90%的芯片厂家都有提供驱动的,除非你是用了些比较不太常用的芯片。哥反正就一拿来主义者!!还真没遇到过需要自己拿示波器调试驱动的,之前也就遇到过时钟不对导致数据采集不正常的情况!但是用示波器对比下正常情况下的时钟,调试下也就完事了~~
回复

使用道具 举报

17

主题

344

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1280
金钱
1280
注册时间
2013-12-14
在线时间
567 小时
发表于 2017-1-16 10:41:41 | 显示全部楼层
程序调试其实还是小事,只是经验问题,有的时候没有demo代码的时候,要硬着头皮从无到有看英文手册,示波器调程序,配寄存器,才是蛋疼,完全就是苦力。
半导体->模拟电路->数字电路->单片机->汇编->C->操作系统->java
回复

使用道具 举报

32

主题

883

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4036
金钱
4036
注册时间
2015-11-14
在线时间
545 小时
发表于 2017-1-16 10:43:21 | 显示全部楼层
串口调试,这是老前辈玩51常用的方法
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
 楼主| 发表于 2017-1-16 10:47:36 | 显示全部楼层
GS1101923161 发表于 2017-1-16 10:35
怎么总感觉之前有人问过这个问题!!现在市面上90%的芯片厂家都有提供驱动的,除非你是用了些比较不太常用 ...

我现在是个菜鸟~~

前几天写ILI9341 LCD的驱动,是按照时序图自己写的8080总线驱动程序,还有LCD一些功能,画点啊,画线,显示字符什么的。。

请问前辈,这些厂家都有提供吗~~
亦余心之所善,
虽九死其犹未悔。
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
 楼主| 发表于 2017-1-16 10:50:27 | 显示全部楼层
东北小辉辉 发表于 2017-1-16 10:35
我刚开始写程序时候也不会调试,其实这种东西,你完全搞懂一个,其他的就都懂了,剩下的就是经验的问题。
...

对,你基本上回答了我的问题了

不过,悲剧的是,手头没有示波器啊,硬件只有STLINK。。我不知道程序哪里出了问题,只能先从驱动层开始调。
可是木有示波器,怎么查看时序图啊只能看电平一句句整吗,这样也不准确~~~
亦余心之所善,
虽九死其犹未悔。
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
 楼主| 发表于 2017-1-16 10:53:03 | 显示全部楼层
东北小辉辉 发表于 2017-1-16 10:41
程序调试其实还是小事,只是经验问题,有的时候没有demo代码的时候,要硬着头皮从无到有看英文手册,示波器 ...

还没达到你的层次,一步步走吧~ 不过你说的问题,我现在也能感受一二分了。。


弄了个RC522的模块,想走你说的这个套路,发现功力不够,决定还是看别人代码,仿写。。
亦余心之所善,
虽九死其犹未悔。
回复

使用道具 举报

32

主题

883

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4036
金钱
4036
注册时间
2015-11-14
在线时间
545 小时
发表于 2017-1-16 10:53:08 | 显示全部楼层
买个逻辑分析仪,我也是这样学习的,公司有示波器,自己在家只有使用逻辑分析仪
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
 楼主| 发表于 2017-1-16 10:53:31 | 显示全部楼层
Electronic 发表于 2017-1-16 10:43
串口调试,这是老前辈玩51常用的方法

能否再具体一点呢~~~菜鸟一枚
亦余心之所善,
虽九死其犹未悔。
回复

使用道具 举报

32

主题

883

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4036
金钱
4036
注册时间
2015-11-14
在线时间
545 小时
发表于 2017-1-16 10:56:19 | 显示全部楼层
调试的话就是要能够体现效果出来,或者是能够体现出什么特征来,比如24C02,你调试可以尝试往一个地址写一个数据,然后再读出来,看看对不对
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
 楼主| 发表于 2017-1-16 11:01:21 | 显示全部楼层
Electronic 发表于 2017-1-16 10:56
调试的话就是要能够体现效果出来,或者是能够体现出什么特征来,比如24C02,你调试可以尝试往一个地址写一 ...

前辈说的类似校验程序吧,我写了,在255地址写了个数据,然后判断返回值是否正确。返回值是不对的,现在问题就是,我不知道哪里出了问题啊。。

没读出来的错误原因有很多,例如,IIC总线驱动写错了,读写程序写错了。。

只能从驱动层开始一步步查原因吗?可是我没有示波器,怎么调试IIC总线的时序是不是写对了呢
亦余心之所善,
虽九死其犹未悔。
回复

使用道具 举报

32

主题

883

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4036
金钱
4036
注册时间
2015-11-14
在线时间
545 小时
发表于 2017-1-16 11:02:02 | 显示全部楼层
买个逻辑分析仪分析
回复

使用道具 举报

32

主题

883

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4036
金钱
4036
注册时间
2015-11-14
在线时间
545 小时
发表于 2017-1-16 11:02:05 | 显示全部楼层
买个逻辑分析仪分析
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
 楼主| 发表于 2017-1-16 11:05:11 | 显示全部楼层
Electronic 发表于 2017-1-16 11:02
买个逻辑分析仪分析

简单在淘宝搜了下,价格从几十到上千不等啊,我要实现的功能比较简单,前辈可否推荐下。。。
亦余心之所善,
虽九死其犹未悔。
回复

使用道具 举报

32

主题

883

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4036
金钱
4036
注册时间
2015-11-14
在线时间
545 小时
发表于 2017-1-16 11:22:12 | 显示全部楼层
我就买了个24M的,几十块钱,分析低速的还是没有问题的,对项目调试很有帮助的
回复

使用道具 举报

21

主题

387

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1043
金钱
1043
注册时间
2016-9-8
在线时间
213 小时
发表于 2017-1-16 11:58:53 | 显示全部楼层
南有乔木 发表于 2017-1-16 10:50
对,你基本上回答了我的问题了

不过,悲剧的是,手头没有示波器啊,硬件只有STLINK。。我不知道程 ...

本人有个普源示波器,没怎么用过。出售,需要吗?
shop60994719.taobao.com
回复

使用道具 举报

15

主题

406

帖子

0

精华

高级会员

Rank: 4

积分
795
金钱
795
注册时间
2015-3-26
在线时间
151 小时
发表于 2017-1-16 12:02:56 | 显示全部楼层
不考虑调出来么是只要      写出来就行      这么简单了 ,,考虑到后期要实现可就不只是写出来就行了
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
 楼主| 发表于 2017-1-16 13:47:58 | 显示全部楼层
xyl210xyl 发表于 2017-1-16 12:02
不考虑调出来么是只要      写出来就行      这么简单了 ,,考虑到后期要实现可就不只是写出来就行了

你说的对啊 ,但是不管怎么样,写起来还是没压力

但是出问题,整个人就懵逼了
亦余心之所善,
虽九死其犹未悔。
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
 楼主| 发表于 2017-1-16 13:49:03 | 显示全部楼层
密耳 发表于 2017-1-16 11:58
本人有个普源示波器,没怎么用过。出售,需要吗?

多少钱啊

我自己偷偷摸摸在公司学这个,要是示波器很大,摆在办公桌上暴露了
亦余心之所善,
虽九死其犹未悔。
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
 楼主| 发表于 2017-1-16 13:49:27 | 显示全部楼层
Electronic 发表于 2017-1-16 11:22
我就买了个24M的,几十块钱,分析低速的还是没有问题的,对项目调试很有帮助的

没问题
亦余心之所善,
虽九死其犹未悔。
回复

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2017-1-16 14:26:13 | 显示全部楼层
南有乔木 发表于 2017-1-16 13:47
你说的对啊 ,但是不管怎么样,写起来还是没压力

但是出问题,整个人就懵逼了

调试IIC可以买个逻辑分析仪 我当时买3个100块,逻辑分析仪程序有对SPI,IIC,UART相关的总线直接解析,调试底层看时序是非常方便。
对应一个项目调试,我是使用串口进行交换信息,硬调是不合理的!
让我们的思维驾驭在电的速度之上!
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
 楼主| 发表于 2017-1-16 14:38:10 | 显示全部楼层
DongInker 发表于 2017-1-16 14:26
调试IIC可以买个逻辑分析仪 我当时买3个100块,逻辑分析仪程序有对SPI,IIC,UART相关的总线直接解析,调试 ...

硬件调试基本没什么卵用。。。还是一步步分析程序

谢谢指导啦
亦余心之所善,
虽九死其犹未悔。
回复

使用道具 举报

14

主题

219

帖子

0

精华

高级会员

Rank: 4

积分
598
金钱
598
注册时间
2014-4-14
在线时间
76 小时
发表于 2017-1-16 15:08:10 | 显示全部楼层
南有乔木 发表于 2017-1-16 10:47
我现在是个菜鸟~~

前几天写ILI9341 LCD的驱动,是按照时序图自己写的8080总线驱动程序,还有LCD一些功 ...

这些原子哥代码都有~~画点啥的 属于应用范围,不算驱动,厂家不会提供的
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
 楼主| 发表于 2017-1-16 15:13:48 | 显示全部楼层
GS1101923161 发表于 2017-1-16 15:08
这些原子哥代码都有~~画点啥的 属于应用范围,不算驱动,厂家不会提供的

对这些分层不太了解,原子代码有,我也仿照自己写了。。。

亦余心之所善,
虽九死其犹未悔。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 20:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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