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; //没有实际输出,可直接返回。
}
相关推荐
’长谷深风‘4 小时前
51单片机入门(4温度采集:DS18B20)
单片机·嵌入式硬件·51单片机·ds18b20·温度采集
Hello World . .4 小时前
51单片机——DS18B20 温度传感器
单片机·嵌入式硬件·51单片机
yugi9878385 小时前
51单片机控制8×8点阵显示汉字(上下左右滚动)
单片机·嵌入式硬件·51单片机
LCG元8 小时前
STM32项目开发:基于CAN总线的多节点通信与数据采集系统
stm32·单片机·嵌入式硬件
12.=0.9 小时前
【stm32_2.1】【快速入门】自举模式、Flash闪存、LED点灯——对二极管PN结解析
stm32·单片机·嵌入式硬件
辰哥单片机设计10 小时前
STM32智能风扇(机智云)
stm32·单片机·嵌入式硬件
【 STM32开发 】10 小时前
【STM32 + CubeMX】低功耗 -- SLEEP 睡眠模式
stm32·单片机·低功耗·sleep·睡眠模式
芯芯点灯10 小时前
LIS2DW12驱动,功耗,数据可视化
驱动开发·单片机
Nice__J11 小时前
Mcu架构以及原理——2.Cortex-M流水线与指令集
单片机·嵌入式硬件·架构
小白橘颂11 小时前
【C语言】基础概念梳理(一)
c语言·开发语言·stm32·单片机·mcu·物联网·51单片机