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; //没有实际输出,可直接返回。
}
相关推荐
电子科技圈1 小时前
芯科科技推出首批第三代无线开发平台SoC,高度集成的解决方案推动下一波物联网实现突破
嵌入式硬件·mcu·物联网·网络安全·智能家居·智能硬件·iot
DIY机器人工房1 小时前
[9-2] USART串口外设 江协科技学习笔记(9个知识点)
笔记·科技·stm32·单片机·学习·江协科技
wh_xia_jun2 小时前
通过mqtt 发布温湿度
单片机
敬往事一杯酒哈2 小时前
第一节 51单片机概述
单片机·嵌入式硬件·51单片机
小智学长 | 嵌入式6 小时前
SOC-ESP32S3部分:22-分区表
开发语言·单片机·esp32
小宋同学在不断学习7 小时前
STM32 串口通信①:USART 全面理解 + 代码详解
stm32·单片机·嵌入式硬件
百里东风8 小时前
STM32CubeMX定时器配置
stm32·单片机·嵌入式硬件
长流小哥8 小时前
STM32:ESP8266 + MQTT 云端与报文全解析
stm32·单片机·物联网·mqtt
想搞嵌入式的小白11 小时前
硬件I2C和软件I2C的区别
stm32·单片机·嵌入式硬件
HelloTonyGo11 小时前
在MDK中自动部署LVGL,在stm32f407ZGT6移植LVGL-8.3,运行demo,显示label
stm32·嵌入式硬件·lvgl