Keil调试STM32:未定义OS_EVENT以及停在“BEAB BKPT 0xAB”处等问题

记录一次问题解决过程:

1、未定义OS_EVENT

新修改的Keil工程,在x.h头文件中一旦定义extern OS_EVENT信号量,则报错:未定义OS_EVENT。

查看报错的问题,发现ucosii.h中包含了头文件a.h,而a.h中包含了x.h。而OS_EVENT是在ucosii.h中定义的,从而导致了这个错误。改正这种包含问题就OK了。

2、uC/OS系统跑不起来

编译成功后,下载程序运行,OS系统跑不起来。

原来是ucosii.h中包含的头文件a.h中,有包含stm32f4xx.h文件,因为问题1屏蔽了a.h的包含关系。直接在ucosii.h包含stm32f4xx.h文件就可以了(107芯片似乎不用包含对应库的头文件)。

3、调试程序停在"BEAB BKPT 0xAB"处

调试程序点击运行后,会自动停在"BEAB BKPT 0xAB"处,再点击仍然。多点几次程序才会跑起来。

而且,芯片断电重启后,程序不会运行,应该也是卡在那里。

原因是使用了printf函数引起的问题:

一种是没有定义fputc重定向函数;一种是定义了,但没有在工程配置中勾选"Use microLIB"。

而我的工程2个问题都存在。

解决办法:

1)定义fputc重定向函数,并使能"Use microLIB"。

2)使用以下代码 ,可不使能"Use microLIB":

复制代码
void _sys_exit(int x)
{
    x = x; 
}

//重定义fputc函数
int fputc(int ch, FILE *f)
{
    return ch; //没有实际输出,可直接返回。
}
相关推荐
菠萝地亚狂想曲2 小时前
STM32_HAL库提高中断执行效率
stm32·单片机·嵌入式硬件
xu_wenming3 小时前
FlashDB 在嵌入式系统中占用硬件资源
c语言·数据库·驱动开发·嵌入式硬件
努力创造奇迹3 小时前
STM32 HAL库 HC-05蓝牙通信实现
stm32·嵌入式硬件·struts
今天阳光明媚吗3 小时前
STM32HAL库笔记
笔记·stm32
矜辰所致4 小时前
STM32 低功耗模式下 RTC唤醒 和 PA0唤醒 的配合使用
stm32·低功耗·standby·rtc唤醒
傍晚冰川5 小时前
【STM32点灯大师】定时器实现非阻塞式程序-按键控制LED
笔记·stm32·单片机·嵌入式硬件·学习
&Cheems5 小时前
ZYNQ笔记(七):程序固化(QSPI Flash)
单片机·嵌入式硬件
三唐队队长5 小时前
智能车摄像头开源—9 动态权、模糊PID、速度决策、路径优化
图像处理·人工智能·嵌入式硬件·算法·开源·边缘计算
筱戥芊茹7 小时前
RK3588上Linux系统编译C/C++ Demo时出现BUG:The C/CXX compiler identification is unknown
linux·c语言·c++·嵌入式硬件·bug
森焱森8 小时前
单片机领域中哈希表
c语言·人工智能·单片机·嵌入式硬件·算法