文章目录

  • 一、前言
  • 二、串口中断调用xQueueSendFromISR
    • 2.1、串口中断回调函数(usart.c)
    • 2.2、stm32h7xx_it.c
  • 三、调试
    • 3.1、串口中断后,程序卡死
    • 3.2、卡死原因
  • 四、NIVC中断优先级
    • 4.1、串口中断优先级
    • 4.2、FreeRTOS配置文件的MAX_SYSCALL_INTERRUPT_PRIORITY

一、前言

在网络上搜寻了相关的问题,看一下其他人有没有碰到这个问题。实际上有较多CSDN的博主都碰到这个问题,但能把问题说清楚的博主真的很少。这篇CSDN博文解决了我的问题,只是中断的类型跟我不一样(我使用的是串口中断)。

相关CSDN博文的地址:FreeRTOS死机原因

二、串口中断调用xQueueSendFromISR

我计划将串口中断接收到的字节存放到FreeRTOS的消息队列里,代替裸机系统下的ringbuffer。

2.1、串口中断回调函数(usart.c)

在串口中断回调函数里,需要调用xQueueSendFromISR而不是xQueueSend。

2.2、stm32h7xx_it.c

将函数放进STM32系统中断的回调函数USART3_IRQHandler里,当串口3产生中断时,程序就会进入这个函数里面。

三、调试

3.1、串口中断后,程序卡死

进入MDK调试模式,找到程序卡死的位置。

3.2、卡死原因

FreeRTOS源码的注释里,对产生这个问题的原因进行了描述。

从上面的注释看来,大概的问题应该比较清楚了,就是因为中断优先级造成的

四、NIVC中断优先级

4.1、串口中断优先级

4.2、FreeRTOS配置文件的MAX_SYSCALL_INTERRUPT_PRIORITY

程序卡死的根本原因是串口的中断优先级比FreeRTOS配置文件上的MAX_SYSCALL_INTERRUPT_PRIORITY要高。在明白问题的本质后,就有解决问题的解决方案:

  1. 串口中断的中断优先级设置2(比MAX_SYSCALL_INTERRUPT_PRIORITY大一级)。
  2. 在不修改中断优先级的情况下,串口中断回调函数里不要调用FreeRTOS的API函数。

FreeRTOS | STM32H7串口中断调用FreeRTOS API,导致程序卡死相关推荐

  1. runtime无法执行grep_Runtime.getRuntime.exec()执行linux脚本导致程序卡死有关问题

    Runtime.getRuntime.exec()执行linux脚本导致程序卡死问题 问题: 在Java程序中,通过Runtime.getRuntime().exec()执行一个Linux脚本导致程序 ...

  2. 串口服务器通讯中断不流畅,在FreeRTOS下串口中断不正常工作,一中断就死机为何?...

    CPU: UC3A0512 AVR32Studio 2.1.1 + Tool 2.1.6 中断处理程序如下: 问题描述: 系统跑FreeRTOS系统,开几个任务. 运行正常. 但串口有数据进来的时候立 ...

  3. Runtime.getRuntime.exec()执行linux脚本导致程序卡死问题

    问题: 在Java程序中,通过Runtime.getRuntime().exec()执行一个Linux脚本导致程序被挂住,而在终端上直接执行这个脚本则没有任何问题. 原因: 先来看Java代码: pu ...

  4. 图解C# 调用Win32 API 示例程序

    一 弹出消息框和发声 先上代码:相关函数不解释:网上比较容易查到: using System; using System.Collections.Generic; using System.Compo ...

  5. Win10中控制台程序输出阻塞导致程序卡死

    问题描述: 在win10下运行cmd程序,发现程序回卡死,卡死的时候发现对cmd窗口回车会叫醒 问题原因: 是因为在Win10程序运行的过程中,无意用鼠标左键点击来了控制台,则控制台进入"快 ...

  6. 小程序入门学习06--data、url传参、调用豆瓣api

    豆瓣不能用了,可以用这个 data- 自定义数据属性 设置 <view class='container movie-card' bindtap='f1' data-user-name=&quo ...

  7. 解决QT接受串口数据时数据更新不及时,串口数据太多导致程序界面崩溃,串口接收数据过快等问题

    1.问题背景 最近在使用上位机测试传感器接受数据是否正常,发现了很多问题,由于没有系统的学过Qt,用到什么库就学什么库,导致库中的函数很多不清晰,产生了标题中的一系列问题,经过不断的尝试,终于解决上述 ...

  8. 嵌入式FreeRTOS系统,在中断中调用FreeRTOS系统的API函数

    作为在中断中调用FreeRTOS系统的API函数的参考,disp_str()是显示屏的显示函数会将传入的字符串进行显示. void TIM5_Int_Init(u16 arr,u16 psc) {TI ...

  9. 梳理STM32F429之通信传输部分---NO.3 串口空闲IDEL中断+DMA+FreeRTOS

    梳理STM32F429之通信传输部分---NO.3 串口空闲IDEL中断+DMA+FreeRTOS 目录 一.串口空闲IDEL中断: 二.串口及串口中断的配置: 三.stm32f4xx_it.h 的配 ...

最新文章

  1. urlparse模块(专门用来解析URL格式)
  2. 一次性搞定权限树遍历(通用解决方案)
  3. python中用来占位的语句是_python占位语句
  4. java的reflection
  5. 配置MySQL数据库单机多实例
  6. ehcache 手动刷新缓存_【第 21 期】一个架构师的缓存修炼之路
  7. 博客搜索引擎索引博文数量分析与评估
  8. 如何将Windows 10帐户还原为本地帐户(在Windows Store劫持它之后)
  9. python字符串设置字体_python怎么更改字符串后几位
  10. 过程(栈帧结构是干货)
  11. 这几个行业会从物联网革命中获得最大利益
  12. jQuery 表单验证插件 jQuery Validation Engine 使用
  13. 【探路者】10月16日立会报告(团队第1周-第3次)
  14. 运行Django,Python崩溃
  15. OverFeat心得
  16. 被头条开除了....
  17. 中国步进电机市场现状研究分析与发展前景预测报告(2022)
  18. 头戴式蓝牙耳机,出现左耳没有声音,右耳正常。
  19. 不会linux也没关系,点击鼠标即可完成的LDSC分析来了
  20. 解决iview weapp的i-input组件在微信开发者工具中不能输入值的问题

热门文章

  1. 记录一次iOS11大标题不滚动的问题
  2. Android 一个Activity 里面放置多个 Fragment 实现点击切换的Tab 页面效果
  3. CC++——库头文件及其作用
  4. centos和redhat启用epel软件库
  5. UNIX网络编程——进程间通信概述
  6. iOS5中 UIViewController新方法的使用
  7. 0.IT-解决方案-0-VOIP
  8. 使用openswan构建lan-to-lan ×××(KLIPS)
  9. 用C++解析HTTP下载下来的HTML文档
  10. 微软Vista今起大幅降价 最高幅度达到千元