STM32 加入调试信息来调试代码

发布者:pi26最新更新时间:2020-03-02 来源: eefocus关键字:STM32  调试信息  调试代码 手机看文章 扫描二维码
随时随地手机看文章

这个想法是从K60上得出来的;今天再帮一哥们看程序的时候,他可以用串口看出来那个文件那一行文件出现问题了,于是很好奇,就问他,他也不知道,然后我就细心的研究了下他的库;发现一个不错的调试方法,其实这个在stm32里面本身也是设置好了的,但是大家一致都没有去用;


先看stm32f10x_conf.h里面的一些内容:


/* Exported macro ------------------------------------------------------------*/

#ifdef  USE_FULL_ASSERT

 

/**

  * @brief  The assert_param macro is used for function's parameters check.

  * @param  expr: If expr is false, it calls assert_failed function which reports 

  *         the name of the source file and the source line number of the call 

  *         that failed. If expr is true, it returns no value.

  * @retval None

  */

  #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))

/* Exported functions ------------------------------------------------------- */

  void assert_failed(uint8_t* file, uint32_t line);

#else

  #define assert_param(expr) ((void)0)

#endif /* USE_FULL_ASSERT */

默认情况下是:

#define assert_param(expr) ((void)0)


明显,没有什么用,如果我们想调试的时候,可以加一个宏定义:


#define USE_FULL_ASSERT


那么我们就可以用这个判断了;


#define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))


void assert_failed(uint8_t* file, uint32_t line);

不过还没有完,我们需要在再写一个assert_failed的函数,来实现他的功能:


#ifdef USE_FULL_ASSERT

#include "stdio.h"

void assert_failed(uint8_t* file, uint32_t line)

{

char buff[64];

sprintf(buff,"%s %d",file,line);

RS232SendStr(buff);

while(1);

}

 

#endif


你还可以在里面加入其他调试信息;

this all!

关键字:STM32  调试信息  调试代码 引用地址:STM32 加入调试信息来调试代码

上一篇:stm32 灵活静态存储控制器(FSMC)(NORFLASH\PSRAM)
下一篇:【菜鸟入门】stm32 之 eeprom

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved