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; //没有实际输出,可直接返回。
}
相关推荐
EdmundXjs22 分钟前
flashrom v1.5.1 Windows
windows·stm32·单片机
Saniffer_SH2 小时前
【市场洞察】一叶知秋 - 从2026年开年Quarch公司PCIe 6.0测试工具销售状况说起
服务器·人工智能·嵌入式硬件·测试工具·fpga开发·自动化·压力测试
llilian_163 小时前
铷原子频率标准 以时频基准破局,为计量校准赋能 时基铷钟
网络·功能测试·单片机·嵌入式硬件·测试工具·算法
潜创微科技3 小时前
CH9339 双主机 USB3.2 协同 + PD 快充对拷芯片方案
嵌入式硬件·音视频
wearegogog1233 小时前
NEC红外线协议编码与解码(STM32实现)
网络·stm32·嵌入式硬件
振南的单片机世界4 小时前
中断向量表:CPU的“紧急联系人”名单
单片机·嵌入式硬件
llilian_164 小时前
频率计生产厂家 高精度通用频率计核心参数设置指南 双频率计 无线频率计
功能测试·单片机·嵌入式硬件·硬件工程
普中科技4 小时前
【普中 51-Ai8051 开发攻略】-- 第 10 章 矩阵按键实验
单片机·嵌入式硬件·矩阵·开发板·普中科技·ai8051u·aicube
努力的小帅4 小时前
蓝桥杯——入门
c语言·单片机·蓝桥杯
意法半导体STM325 小时前
【官方原创】STM32 USBx Host HID standardalone移植示例 LAT1449
开发语言·前端·stm32·单片机·嵌入式硬件