symbol _assert_failed not defined (Debugstm8s_adc1.o )
在调试STM8的时候出现了这个问题,即函数assert_failed 未定义。查找问题,在stm8s_conf.h中对void assert_failed(u8* file, u32 line) 进行了申明,确没有文件中对该函数体进行编写,因此编译时找不到该函数而出错。因为之前没有使用库文件,全部自己调用寄存器编制的程序就没有碰到这种问题。
在头文件stm8s_conf.h中对函数有引用:
#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 */
新建一个stm8s_assert_fail.c文件,在开始时包含stm8s_conf.h,添加函数体文件如下:
#include “stm8s_conf.h”
#ifdef USE_FULL_ASSERT
/**
@brief Reports the name of the source file and the source line number
where the assert_param error has occurred.
@param file: pointer to the source file name
@param line: assert_param error line source number
@retval : None
/
void assert_failed(u8 file, u32 line)
{
/* User can add his own implementation to report the file name and line number,
ex: printf(“Wrong parameters value: file %s on line %drn”, file, line) */
/* Infinite loop */
while (1)
{
}
}
#endif
编译即可通过。
上一篇:STM8 汇编学习笔记2: 开发环境
下一篇:STM8S开发小结
设计资源 培训 开发板 精华推荐
- AM1D-1215DH30-RZ ±15V 1 瓦 DC/DC 转换器的典型应用
- LTC2946HDE 宽范围 -4V 至 -500V 负电源、电荷和能量监视器(10kHz I2C 接口)的典型应用
- 使用 MaxLinear, Inc 的 SPX1585 的参考设计
- SC441 4串150mA LED高效集成驱动器的典型应用
- 用于 16 位 ADC AD7701 的 ADR421 电压基准的典型应用
- EP3041A,Power Architecture 处理器 AMC 是 Advanced MC 具有高性能 QorIQ P3041 双核 Power PC 处理器
- 基于L7985A的2A降压开关演示板
- 使用 Infineon Technologies AG 的 IR3536-00MTRPBF 的参考设计
- LC786830TYPE2-GEVK:LC786830 评估板
- ADCLK854/PCBZ,ADCLK954 时钟扇出缓冲器评估板