当前位置: 首页 > news >正文

学习FreeRTOS(中断管理)

1.中断管理

1.1 什么是中断?

中断是CPU暂停当前程序以处理内部或外部事件,完成后再继续原程序的过程

在ARM体系中,中断主要由外设输入或软件触发,用于响应紧急事件如定时器溢出、按键输入或串口数据到达。

1.2 中断的意义

中断的核心作用是提升CPU效率,通过事件驱动机制实现:

‌避免空转‌:相比轮询(持续检测),中断仅在事件发生时触发处理,减少CPU资源浪费

实时响应‌:立即处理紧急事件(如按键、数据到达)

多任务支持‌:通过快速切换实现伪并行执行

1.3 中断优先级

任何中断的优先级都大于任务!

在我们的操作系统,中断同样是具有优先级的,并且我们也可以设置它的优先级,但是他的优先级并不是从 0~15 ,默认情况下它是从 5~15 ,0~4 这 5 个中断优先级不是 FreeRTOS 控制的(5是取决于 configMAX_SYSCALL_INTERRUPT_PRIORITY)。

1.4 中断执行流程

1.外设触发中断请求

2.CPU暂停当前任务,保存现场(PC等寄存器入栈)

3.跳转执行对应的ISR

4.ISR完成后恢复现场(出栈)

5.返回原程序继续执行  

1.5 相关注意

1. 在中断中必需使用中断相关的函数;

2. 中断服务函数运行时间越短越好。

2. 实操

实验需求

创建一个队列及一个任务,按下按键 KEY1 触发中断,在中断服务函数里向队列里发送数据,任务则阻塞接 收队列数据。

CubeMX配置

代码实现

stm32f1xx_it.c文件代码编写

#include "cmsis_os.h"extern osMessageQId myQueue01Handle;void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){uint32_t snd = 1;xQueueSendFromISR(myQueue01Handle, &snd, NULL);}

freertos.c文件代码编写

/* USER CODE BEGIN Header_StartDefaultTask */
/*** @brief  Function implementing the defaultTask thread.* @param  argument: Not used* @retval None*/
/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void const * argument)
{/* USER CODE BEGIN StartDefaultTask */uint32_t rev=0;/* Infinite loop */for(;;){if(xQueueReceive(myQueue01Handle,&rev,portMAX_DELAY)==pdTRUE){printf("rev:%d\r\n",rev);}osDelay(1);}/* USER CODE END StartDefaultTask */
}

实验现象

1. 打开串口助手观察实验现象(按下key1往队列发送一个数据,并接收)

http://www.dtcms.com/a/558096.html

相关文章:

  • 可跳简单舞蹈的Exbody 2:富有表现力的人形全身控制
  • 开展农业信息网站建设工作总结海口智能建站详情
  • 长沙做手机网站企业策划方案怎么做
  • VS Code使用时遇到WakaTime 插件的 API Key 配置弹窗问题?
  • 基于融合数字孪生与多尺度特征提取的轴承故障模型详解
  • 【运行时错误53文件未找到mathpage wll】
  • 字符串解密
  • java面试:有了解过kafka架构吗,可以详细讲一讲吗
  • 专业国外网站建设手机自己做网站
  • 塑胶托盘东莞网站建设东莞市企业信息查询网
  • 语法--12-- as
  • 小迪安全v2023学习笔记(一百四十一讲)—— Linux系统权限提升篇VulnhubCapability能力LD_Preload加载数据库等
  • ROS2系列 (16) : Python服务通信实例——自定义消息接口
  • T型槽铸铁平台的特点
  • 数字马力前端开发面试题及参考答案(下)
  • 给网站做广告有什么好的网站做推广的
  • 潍坊网站建设官网装修网站开发前的准备工作
  • LLM之Agent(二十五)| 使用 A2A Agents和 MCP Server构建一个Demo Multi-Agent系统
  • 【30】船舶数据集(有v5/v8模型)/YOLO船舶检测
  • 全网视频合集网站建设制作相册图片合集
  • 网站建设建议书嘉兴手机网站建设
  • 公司网站建设 阜阳四川城乡建设网站证件查询
  • MySQL操作库
  • 免费vip影视网站怎么做的重庆网站建设与制作
  • React Hooks 实现表单验证
  • 李宏毅机器学习笔记38
  • 本网站建设优秀个人网站欣赏
  • 基于springboot的河南传统文化展示与推荐系统
  • 宁波专业网站建设公司百度网络营销的概念和含义
  • 《P2656 采蘑菇》