Cortex-M 中断
Cortex-M 内核(STM32)的 MCU 提供了一个用于中断管理的嵌套向量中断控制器(NVIC)。Cotex-M3 的 NVIC 最多支持 240 个 IRQ(中断请求)、1 个不可屏蔽中断(NMI)、1 个 Systick(滴答定时器)定时器中断和多个系统异常。
Cortex-M 处理器有多个用于管理中断和异常的可编程寄存器,这些寄存器大多数都在 NVIC 和系统控制块(SCB)中,CMSIS 将这些寄存器定义为结构体。以 STM32F103 为例,打开 core_cm3.h,有两个结构体,NVIC_Type 和 SCB_Type,就存储了这些信息。
优先级分组定义
当多个中断来临的时候处理器应该响应哪一个中断是由中断的优先级来决定的,高优先级的中断(优先级编号小)肯定是首先得到响应,而且高优先级的中断可以抢占低优先级的中断,这个就是中断嵌套。
Cortex-M 处理器的有些中断是具有固定的优先级的,比如复位、NMI、HardFault,这些中断的优先级都是负数,优先级也是最高的。
Cortex-M 处理器有三个固定优先级和 256 个可编程的优先级,最多有 128 个抢占等级,但是实际的优先级数量是由芯片厂商来决定的。但是,绝大多数的芯片都会精简设计的,以致实际上支持的优先级数会更少,如 8 级、16 级、32 级等,比如 STM32 就只有 16 级优先级。
FreeRTOS 中断配置宏
1、configPRIO_BITS:设置 MCU 使用几位优先级,STM32 使用的是 4 位,因此此宏为 4
2、configLIBRARY_LOWEST_INTERRUPT_PRIORITY :设置最低优先级。
3、configKERNEL_INTERRUPT_PRIORITY:此宏用来设置内核中断优先级。
4、configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY:来设置 FreeRTOS 系统可管理的最大优先级,是高于 x 的优先级不归 FreeRTOS 管理!
5、configMAX_SYSCALL_INTERRUPT_PRIORITY:低于此优先级的中断可以安全的调用 FreeRTOS 的 API 函数,高于此优先级的中断 FreeRTOS 是不能禁止的,中断服务函数也不能调用 FreeRTOS 的 API 函数!
关键字:STM32平台 FreeRTOS 中断配置
引用地址:
STM32平台下的FreeRTOS中断配置
推荐阅读最新更新时间:2024-11-12 07:35
学习笔记——FreeRTOS任务的创建(动态方法)
学习了任务的相关知识后,在MDK5中以STM32F407为开发板尝试任务的创建和删除。 任务创建有两种方式分别为动态创建和静态创建,分别通过调用vTaskcreat()和vTaskcreat_static()来创建。其区别是动态创建任务的堆栈由系统分配,而静态创建任务的堆栈由用户自己传递。 动态创建任务的原型 其中各个参数:pxTaskCode 任务函数(由用户自己编写的函数,一般为一个无限循环) pcName 任务名(用于追踪和调试,最大长度不超过configMAX_TASK_NAME_LE
[单片机]
STM32+FreeRTOS+CUBEMX_学习笔记(七 )输入捕获
前言 我们可以利用输入捕获模式来测量脉冲宽度或者测量频率。 1、cube设置 2、函数详解: /** * @brief Read the captured value from Capture Compare unit 读取通道捕获值 * @param htim TIM handle. * @param Channel TIM Channels to be enabled * This parameter can be one of the following values: * @arg TIM_CHANNEL_1: TIM Channel 1 selected * @arg T
[单片机]
STM32F0xx_EXIT中断配置详细过程
Ⅰ、概述 EXIT外部中断在使用到按键或者开关控制等应用中比较常见,低功耗中断唤醒也是很常见的一种。因此,EXIT在实际项目开发中也是比较常见的一种。 STM32F0中外部中断EXIT属于中断和事件的章节,请看参考手册第十二章,但需要配合系统配置控制器(System configuration controller)进行操作,为中断分配引脚,详情请看参考手册第十章。 Ⅱ、下载 文章提供的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘,请放心下载测试,如有问题请检查一下你的板子是否有问题。 ST标准外设库和参考手册、数据手册等都可以在ST官网下载,你也可以到我的360云盘下载。关于F0系
[单片机]
[nrf51][nrf52][SDK17] NRF系列怎么实现低功耗运行,带freertos能进入吗?
一、NRF51/NRF52系统低功耗表 (浅睡) (深睡,唤醒就复位重启) 二、实测产品没有达到低功耗怎么办? 测量有100uA,这个时候需要检查 是否断开,需要掉电一次,再测量。 测量有几百uA,这一定是外设没有关闭。如下列表: 引用官方手册: System ON模式,就是CPU可以不工作而外设可以继续工作的一种低功耗模式。 idle模式下,当CPU和所有外设都不工作时,系统电流也就有2uA左右。 (注:除了idle模式,nRF5芯片还支持一种更低功耗的低功耗模式:sleep模式(Nordic芯片手册称为System OFF模式),sleep模式下,CPU和所有外设都强制关闭,所以功耗非常低:只有零点几微安。由于
[单片机]
Cortex-M的RTOS中断优先级配置方案
如果CPU没有中断,你能想象是什么情况吗? 就是一个while循环,且不能中断处理及时的任务,更别说有现在的RTOS了(RTOS也是需要中断才能实现)。 下面就来说说关于Cortex-M中断在RTOS应用及注意事项。 关于Cortex-M处理器 这里先介绍一点Cortex-M处理器相关的内容,本文结合内核为Cortex-M3的STM32来讲述。 STM32属于ARM中Cortex-M系列处理器,比如:STM32F1数据Cortex-M3,STM32F7数据Cortex-M7。 可以参看我之前分享文章《从Cortex-M到Cortex-A认识ARM处理器》,了解一下关于ARM处理器的种类。 本文主要结合Cortex-
[单片机]
FreeRTOS移植到STM32F103步骤与注意事项
前言: 由于之前听过太多人抱怨移植FreeRTOS到STM32有各种各样的问题,小灯经过一年多对FreeRTOS的研究并在公司产品中应用,多少有些心得,接下来就由小灯以最新版的FreeRTOS为例一步一步移植到 STM32F1 03上,并提醒大家某些需要注意的事项。本文档为非正式技术文档,故排版会有些凌乱,希望大家能提供宝贵意见以供小灯参考改进。 下面先以IAR移植为例,说明移植过程中的诸多注意事项,最后再以MDK移植时不再重复说明,所以还是建议大家先花些时间看IAR的移植过程,哪怕你不使用IAR,最好也注意下那一大堆注意事项! 一、从官网下载最新版的FreeRTOS源码 下面的网址是官方最新源码的下载地址: https:/
[单片机]
stm32 tim6、tim7中断配置以及注意事项
void TIM6_Init(void) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); NVIC_InitStructure.NVIC_IRQChannel = TIM6_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 13; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; N
[单片机]
STM32双路信号源及配置平台电路设计
随着在雷达探测、仪表测量、化学分析等领域研究的不断深入,不仅要求定性的完成目标检测,更加需要往高精度、高分辨率成像的方向发展。一方面,产生频率、幅度灵活可控,尤其是低相位噪声、低杂散的频率源对许多仪器设备起着关键作用。另一方面,电子元器件实际性能参数并非理想以及来存在自外部内部的干扰,大量的误差因素会严重影响系统的准确性。双路参数可调的信号源可有效地对系统误差、信号通道间不平衡进行较调,并且可以产生严格正交或相关的信号,这在弱信号检测中发挥重要作用。为此本文采用双通道DDS方法,以STM32($18.3200)为控制器,完成了一种高分辨率灵活可调的双路信号源电路设计。 最终设计出的滤波器结构参数及仿真结果如图1所示。 图1
[单片机]