rt thread studio 死循环b Infinite_Loop

**问题描述:**rt thread studio中调用HAL_UART_Receive_IT或HAL_TIM_Base_Start_IT等函数开启外设中断,进入死循环b Infinite_Loop

在这里插入图片描述

问题原因:
没有编写中断服务函数,如TIM7_IRQHandler USART2_IRQHandler,所以会进入“Default_Handler”默认服务函数中死循环
使用cubemx+keil开发裸机项目时,cubemx会根据配置自动生成相应的中断服务函数,并放置在stm32f1xx_it.c文件中。
但是,当我们使用rt thread studio联合cubemx开发时,stm32f1xx_it.c不会参加编译,因为rt thread会重写一套相关的中断服务函数,并放置在相应的drv文件中
比如usart放置在drv_usart.c中,如果要使用这里的中断服务函数,需要去board.h中定义串口,然后将里面的uart_isr()函数屏蔽掉,换成自己的中断回调函数。
在这里插入图片描述

解决办法:
首先,选择你的开发方式,如果是rt thread驱动开发,那么按照手册进行开发即可,不会出现上述问题
如果需要使用HAL库开发,
打开stm32f4x_it.h头文件,查看函数名,然后点击跳转到定义的地方,也就是drv文件里面
如drv_hwtimer.c、drv_usart.c中然后自己定义中断回调函数
在这里插入图片描述

将里面的中断回调函数换成HAL库函数
这里有个前提是,你要在board.h中定义BSP_USING_TIM7,如果是串口中断的话,也需要去定义BSP_UART
否则这一块会是灰色的

在这里插入图片描述

如果不想去board.h中定义定时器和串口
可以新建一个.c源文件,将stm32f1xx_it.c中要用到的中断服务函数复制过去即可

在这里插入图片描述

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

注意沈题!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值