程序卡在 B.处什么原因?如何处理?(串口配置无问题,重写putc无问题,但不打印)

文章目录

前提

为了张流量券多加更一篇,是我2月份遇到的问题的总结,在我的笔记中,一直没发

现象:

已经配置好串口但不打印输出(printf指向串口1 的SR寄存器,其他引脚和usart配置无问题)

debug:

先运行,无error无warning

进行debug查询问题所在,发现串口初始化usart_init(115200);都没走到就卡死在如图下所示的 B .位置

经过这个现象,再去寻找答案

原因

程序卡死在B .处,说明有中断没处理
比如,启用了某个类型的中断,但是没有对应的中断处理函数 ,则会出现这种问题
知道是中断的原因后,我第一个想法是关于串口配置的中断,因为我现在做的是串口功能,检查
串口中断服务函数
中断配置位置


检查后并无发现有问题

继续debug

在初始化发现根本还没来得及串口初始化便卡死在B.也就是说是串口之前的初始化工作中的中断出了问题,继续debug

发现在sys_init();函数中卡死

卡在126行,但是125是赋值,所以我当时并不能确定是126行的错误,也不能说是125行(126还没运行,卡死的是125,但是125没有写逻辑只是进行了赋值)

我们就知道是SYS_TICK()出了问题,结合前面卡在B.位置,大约已经能够确定是系统初始化的中断没有打开,在stm32f4xx_it.c文件中找到了我们需要的函数

默认情况下该函数是被屏蔽的,打开问题解决,串口打印也成功。

总结

.B处一般是中断配制出错的问题

检查之后没有出错

可以看看是不是systick_handler是不是初始化了

本篇文章仅供解决问题参考。

相关推荐
LCG元10 小时前
STM32实战:基于STM32F103的Bootloader设计与IAP在线升级
javascript·stm32·嵌入式硬件
不怕犯错,就怕不做11 小时前
Linux-Sensor驱动移植与调试(转载)
linux·驱动开发·嵌入式硬件
LCMICRO-1331084774611 小时前
长芯微LCMDC8584完全P2P替代ADS8584,是一款16位、4通道同步采样的逐次逼近型(SAR)模数转换器(ADC)
stm32·单片机·嵌入式硬件·fpga开发·硬件工程·模数转换器adc
STC_USB_CAN_805111 小时前
菜单学习,科学计算器使用【TFT240*320彩屏+实际键盘】@Ai8051U,ST7789
单片机·学习·51单片机
FreakStudio12 小时前
无硬件学LVGL—定时器篇:基于Web模拟器+MicroPython速通GUI开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
异方辰电子14 小时前
8.原理图为什么看不到具体的电路(比如STM32的晶振等)
stm32·单片机·嵌入式硬件
richxu2025100116 小时前
嵌入式学习之路->stm32篇->(11)SPI通信(下)
stm32·嵌入式硬件·学习
电子科技圈16 小时前
从进迭时空K3看RISC-V CPU与Imagination GPU协同:如何构建高性能SoC能力
大数据·图像处理·人工智能·嵌入式硬件·边缘计算·智能硬件·risc-v
W.W.H.16 小时前
FreeRTOS移植(保姆级教程)
经验分享·单片机·操作系统·freertos·rtos
LCG元17 小时前
STM32实战:基于STM32F103的智能消防报警联动系统
stm32·单片机·嵌入式硬件