vote

vote

0个粉丝

9

问答

0

专栏

7

资料

vote  发布于  2013-12-10 20:42:10
采纳率 0%
9个问答
3006

如何在编程中更好地验证程序?

 
已知的最好的方法就是串口打印。如果有屏幕还可以显示在屏幕上。但是如果串口有限,并且已经被用到了其他芯片间的通讯。并且没有屏幕,那么如何有效的验证程序的执行呢?
我来回答
回答5个
时间排序
认可量排序

vote

0个粉丝

9

问答

0

专栏

7

资料

vote 2013-12-10 20:43:35
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=5562&ptid=2798]vacumm 发表于 2013-12-10 20:42[/url]
使用断言!![/quote]

什么是断言呢?能不能犟详细点,怎么用啊?

vacumm

0个粉丝

4

问答

0

专栏

2

资料

vacumm 2013-12-10 20:44:26
认可0
本帖最后由 vacumm 于 2013-12-10 20:45 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=5562&ptid=2798]vacumm 发表于 2013-12-10 20:42[/url]
使用断言!![/quote]

在STM32的固件库和提供的例程中,到处都可以见到assert_param()的使用。如果打开任何一个例程中的stm32f10x_conf.h文件,就可以看到实际上assert_param是一个宏定义;在固件库中,它的作用就是检测传递给函数的参数是否是有效的参数。

所谓有效的参数是指满足规定范围的参数,比如某个参数的取值范围只能是小于3的正整数,如果给出的参数大于3,则这个assert_param()可以在运行的程序调用到这个函数时报告错误,使程序员可以及时发现错误,而不必等到程序运行结果的错误而大费周折。

这是一种常见的软件技术,可以在调试阶段帮助程序员快速地排除那些明显的错误。

它确实在程序的运行上牺牲了效率(但只是在调试阶段),但在项目的开发上却帮助你提高了效率。

当你的项目开发成功,使用release模式编译之后,或在stm32f10x_conf.h文件中注释掉对USE_FULL_ASSERT的宏定义,所有的assert_param()检验都消失了,不会影响最终程序的运行效率。




在执行assert_param()的检验时,如果发现参数出错,它会调用函数assert_failed()向程序员报告错误,在任何一个例程中的main.c中都有这个函数的模板,如下:

void assert_failed(uint8_t* file, uint32_t line)
{
  /* User can add his own implementation to report the file name and line number,
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

  while (1)
  {}
}

你可以按照自己使用的环境需求,添加适当的语句输出错误的信息提示,或修改这个函数做出适当的错误处理。
如果你没有空闲的串口,可以用LED啊,这样就能判断程序的状态

AOC

0个粉丝

19

问答

0

专栏

15

资料

AOC 2013-12-10 20:51:30
认可0
目前觉得最好的放方法,串口打印。

dongfo

0个粉丝

10

问答

0

专栏

39

资料

dongfo 2013-12-11 07:52:50
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=5566&ptid=2798]AOC 发表于 2013-12-10 20:51[/url]
目前觉得最好的放方法,串口打印。[/quote]

前提已经给出了,没有串口可用!

vacumm

0个粉丝

4

问答

0

专栏

2

资料

vacumm 2013-12-10 20:42:49
认可0
使用断言!!
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区