历史上的今天
返回首页

历史上的今天

今天是:2025年04月12日(星期六)

2019年04月12日 | STM32F4使用FreeRTOS的中断

2019-04-12 来源:eefocus

在使用stm32f4-discovery的FreeRTOS是设置一个按键中断,但是中断发生之后程序就卡住了,通过调试,发现程序卡在port.c中的configASSERT()语句。通过查找资料发现是中断优先级设置的问题。


CORTEX内核的优先级是数值越小优先级越高,即0是最高优先级。FreeRTOS为了满足某些应用对中断实时性要求高的需求,使得中断优先级高于某个值之后,就不能调用操作系统的内核函数来提高实时性。


而我所犯的错误就是将中断的优先级设置的高于这个值,却还在中断中调用操作系统提供的API引起的。当把优先级改小也就是数值改大之后,程序能够正常运行。


下面是程序卡住的地方,从上面的注释也可以看出是因为优先级的原因。


  1.                     /* The following assertion will fail if a service routine (ISR) for

  2.            an interrupt that has been assigned a priority above

  3.            configMAX_SYSCALL_INTERRUPT_PRIORITY calls an ISR safe FreeRTOS API

  4.            function.  ISR safe FreeRTOS API functions must *only* be called

  5.            from interrupts that have been assigned a priority at or below

  6.            configMAX_SYSCALL_INTERRUPT_PRIORITY.*/



  7.            configASSERT( ucCurrentPriority >= ucMaxSysCallPriority );

FREERTOS中的优先级数值设定的参数是configMAX_SYSCALL_INTERUPT_PRORITY。默认值是5,所以要想在中断中使用操作系统函数需要将中断的优先级设置的大于等于5.


  1. #define configMAX_SYSCALL_INTERRUPT_PRIORITY     ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )


推荐阅读

史海拾趣

乾坤(Cyntec)公司的发展小趣事

产品质量是企业的生命线。乾坤公司深谙此道,因此在发展过程中始终注重质量管理体系的建立和完善。公司引进了国际先进的质量管理理念和方法,通过ISO 9001质量管理体系认证,并严格执行每一道生产工序的质量控制。为了确保产品质量的稳定性和可靠性,乾坤还建立了完善的产品测试和验证流程,每一批产品都要经过严格的质量检测才能出厂。这些举措不仅提升了产品质量,也赢得了客户的广泛认可和信赖。

ELPIDA公司的发展小趣事

在成立初期,ELPIDA凭借其强大的技术实力和规模效应,迅速在全球DRAM市场中占据了重要地位。公司不断推出创新产品,扩大市场份额,成为行业内的重要参与者。然而,随着市场竞争的加剧和技术的快速变化,ELPIDA也面临着巨大的挑战。

Ho Chien Electronics Group Inc公司的发展小趣事

2008年全球金融危机的爆发对ELPIDA造成了巨大冲击。由于DRAM需求的急剧下降和价格的暴跌,公司的业绩急剧恶化。在这种情况下,ELPIDA不得不采取一系列措施来应对困境,包括削减成本、优化生产流程等。然而,这些措施并未能完全扭转公司的颓势。

DINTEK公司的发展小趣事

ELPIDA公司成立于1999年,是日本在DRAM(动态随机存取存储器)领域的重要企业。它的成立是对当时日本半导体产业的一次重要整合,由NEC、日立、三菱电机等公司的DRAM业务合并而成。这一举措旨在振兴日本在DRAM领域的竞争力,并保护国内DRAM产业。

广芯电子(BROADCHIP)公司的发展小趣事

2012年,由于无法承受巨大的财务压力和市场竞争压力,ELPIDA宣布破产保护。随后,美国美光科技公司(Micron Technology)以较低的价格收购了ELPIDA。这一事件标志着日本在DRAM领域的彻底失败,同时也为美光公司带来了重要的技术和市场资源。

Greenconn Corp公司的发展小趣事
定期检查冰箱内部和外部的线路连接是否牢固,确保继电器和定时器等部件工作正常。

问答坊 | AI 解惑

中断执行完和什么也没做似的,郁闷

我用的是51系列的单片机,做的一个在中断中执行键盘扫描的程序,用的LCD1602显示,但是当中断返回后,显示器上已经输入的东西会不见, 用的是外部中断,跳沿触发方式 请帮我看一下是什么问题啊 汇编语言的,        MOV R0, ...…

查看全部问答>

给安防人的动力。

3G助力 600亿元的家庭监控市场等待挖掘 早在2004年,中国视频监控行业应用市场总产值就已经达到151亿元人民币,相比2003年的123亿元人民币增长了近23%,并以每年20%左右的速度不断增长。分析机构调研显示,随着生活节奏的不断加快,家庭用户对安全 ...…

查看全部问答>

[转载].SSRAM、SDRAM和Flash简要介绍.[Memory]

转CalmBright兄的博文:http://www.cnblogs.com/CalmBright/archive/2009/07/19/1526569.html   Abstract 在用NIos II 调试sdram遇到了其容量计算的问题,现介绍如下 Introduction 问题1:什么是DRAM、SRAM、SDRAM? 答: ...…

查看全部问答>

各位前辈指点下,怎么学习嵌入式开发!

http://www.jslc.org.cn/list.php?act1=do&tid=48&ttid=102 这上面有嵌入式培训的网址: 兄弟我像学习嵌入式开发,不知道这个培训班的内容怎么样啊?各位前辈给点意见啊,谢谢! 下面是一些课程介绍: 课程体系 基于ARM的嵌入式研发 ...…

查看全部问答>

求助:我有一定的c#语言基础,我现在要开发一个GIS/GPS系统,请高手给点入门思路!

我有一定的c#语言基础,我现在要开发一个GIS系统,请高手给点入门思路! 我现在有好多问题不懂, 比如在开发GPS/GIS系统之前是不是要会制作和编辑地图? 如何将现有的电子地图应用到开发中,比如在现有地图上经度和纬度等 也许高手会觉得我问的 ...…

查看全部问答>

请教WinCE系统启动问题

我用的是一块2410的开发板,根据资料说明定制的系统下载到扳子上,系统能正确启动,但是当我使用自定义的系统编译时会提示ROM与RAM的地址冲突,提示错误为: Copy Section Offset:     8cef6f84 FileSys 4K Chunks/Mbyte: 12 ...…

查看全部问答>

什么是Arduino? 送给和我一样不明白的人

什么是Arduino?Arduino是一个比你的台式电脑更能够用来感应和控制现实物理世界的一套工具。 它由一个基于简易单片机并且开放源码的计算机平台,和一套为Arduino板编写程序 的开发环境组成。 Arduino可以用来开发交互产品,比如它可以读取大量 ...…

查看全部问答>

发帖纪念一下现代计算机之父——阿兰·图灵

今天闲来无事,在家看一本介绍二战期间密码破译的书,在看到有关图灵贡献一段时,突然意识到昨天是这位现代计算机之父的忌日,特发此帖纪念这位伟大的天才。下面是拜读百度上有关图灵的介绍:【概述】阿兰·麦席森·图灵(Alan Mathison& ...…

查看全部问答>

2812的工作频率

2812最高工作频率是150MHz,如果我只让它工作在15MHz,会不会有什么问题? 此外,外接晶体作为时钟源时,其频率和两个引脚的电容大小有什么关系吗?我看到开发板上用的是30MHz晶体和24pF电容。如果更改晶体频率,电容值也要作相应变动吗? 多谢!…

查看全部问答>

用手机DIY车库遥控器

几乎所有今天制造的设备是使用遥控器。这使我们的生活更容易,因为现在的趋势是使一切东西简单化,用户没有那么多时间和精力去研究较为复杂的设备。通过这一改造,现在可以用电话遥控家里的车库门,而不像以前一样只有一个遥控器装置,而且也不用再 ...…

查看全部问答>