FreeRTOS(3):任务挂起与恢复
任务简介任务大体上与上一篇文章的任务差不多但是将PB1连接的按键用来挂起任务PB11的按键用来恢复任务PB4的按键用中断恢复任务使用xTaskResumeFromISR函数。任务创建复制上一篇文章的FreeRTOS_任务创建与删除动态文件夹粘贴后改名为FreeRTOS_任务创建与恢复进入keil。代码编写由于PB4引脚是JTAG引脚所以在使用PB4引脚前要先释放该引脚然后配置中断具体函数如下笔者是直接将它加在了Key.c这个文件里的void PB4_EXTI_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; // 1. 使能GPIOB、AFIO复用时钟EXTI必须AFIO时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); // 2. 关闭JTAG释放PB3/PB4引脚F1必须加否则PB4无法做普通IO GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); // 3. 配置PB4 GPIO模式上拉输入 GPIO_InitStructure.GPIO_Pin GPIO_Pin_4; GPIO_InitStructure.GPIO_Mode GPIO_Mode_IPU; // 内部上拉输入 GPIO_Init(GPIOB, GPIO_InitStructure); // 4. 配置EXTI中断线PB4映射到EXTI4 GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource4); EXTI_InitStructure.EXTI_Line EXTI_Line4; EXTI_InitStructure.EXTI_Mode EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger EXTI_Trigger_Falling; // 下降沿触发 EXTI_InitStructure.EXTI_LineCmd ENABLE; EXTI_Init(EXTI_InitStructure); // 5. NVIC中断优先级配置 NVIC_InitStructure.NVIC_IRQChannel EXTI4_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority 0x06; NVIC_InitStructure.NVIC_IRQChannelSubPriority 0x00; NVIC_InitStructure.NVIC_IRQChannelCmd ENABLE; NVIC_Init(NVIC_InitStructure); }随后在key.h这个函数里声明PB4_EXTI_Init函数使得外部能够调用该函数。随后打开FreeRTOS_Task.c文件由于我们定义了PB4_EXTI_Init函数所以我们要引用该函数笔者是直接将他加在别的初始化函数下方如下方代码所示void FreeRTOS_Task(void) { Key_Init(); LED_Init(); PB4_EXTI_Init(); xTaskCreate( (TaskFunction_t ) Start_task, (char * ) Start_task, (configSTACK_DEPTH_TYPE) START_TASK_SIZE, (void * ) NULL, (UBaseType_t ) START_TASK_PRIO, (TaskHandle_t * ) start_task_handle ); vTaskStartScheduler(); }随后更改一下task_3函数中的部分语句即可即将PA1所接按键的事件改为触发vTaskSuspend函数既将task_1任务挂起将PA1所接按键的事件改为触发vTaskResume函数既将task_1任务恢复参考代码如下void task_3( void * pvParameters ) { uint8_t KeyVal 0; while(1) { KeyVal Key_GetNum(); if(KeyVal ! 0) { vTaskDelay(pdMS_TO_TICKS(20)); // RTOS延时让出CPULED正常闪烁 if(Key_GetNum() KeyVal) // 二次确认消抖 { // 等待按键松开 while(Key_GetNum() ! 0) { vTaskDelay(pdMS_TO_TICKS(10)); } vTaskDelay(pdMS_TO_TICKS(20)); // 按键触发逻辑 if(KeyVal 1) { vTaskSuspend(task1_handle); } else if(KeyVal 2) { vTaskResume(task1_handle); } } } vTaskDelay(pdMS_TO_TICKS(10)); } }随后我们就可以写中断函数了在FreeRTOS_Task.c 文件最后添加EXTI4_IRQHandler中断函数用来使得PB4触发xTaskResumeFromISR函数具体代码如下void EXTI4_IRQHandler(void) { BaseType_t xNeedSwitch pdFALSE; if(EXTI_GetITStatus(EXTI_Line4) ! RESET) { // 硬件消抖确认PB4低电平按键按下 if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_4) 0) { // 中断专用恢复任务API xNeedSwitch xTaskResumeFromISR(task1_handle); } EXTI_ClearITPendingBit(EXTI_Line4); //清除中断标志位 } // 若唤醒更高优先级任务立即切换上下文 portYIELD_FROM_ISR(xNeedSwitch); }最后编译后下载即可实现现象。若有错误还望海涵。

相关新闻

AI干部画像:从海量材料中自动提炼标签,告别“凭感觉”

AI干部画像:从海量材料中自动提炼标签,告别“凭感觉”

在传统的干部评价工作中,组织部门的同仁们常常面临这样的场景:当需要对一位干部进行全面评价时,需要翻阅堆积如山的干部档案、考察报告、述职材料、民主测评和年度考核报告,逐篇阅读、逐段归纳。碎片化、非结构化的数据管理模式&a…

2026/7/29 5:27:22 阅读更多 →
HC32F460移植RT-Thread Nano实战:从零搭建工控RTOS系统

HC32F460移植RT-Thread Nano实战:从零搭建工控RTOS系统

1. 项目缘起:为什么选择HC32F460与RT-Thread Nano?最近在做一个对成本敏感但功能又不能太简陋的工控小项目,主控选型时,STM32的价格和交期实在让人头疼。翻了一圈国产替代方案,华大半导体的HC32F460系列进入了视线。这…

2026/7/29 5:27:22 阅读更多 →
Day 08-RAG 架构与适用边界

Day 08-RAG 架构与适用边界

对应第一个月计划第 2 周第 1 天:理解 RAG 的完整链路、离线与在线阶段、适用场景、失败边界和评测拆分。 建议投入:4~5 小时。当天交付:RAG 架构说明、场景决策清单、最小关键词检索演示、实验记录与学习复盘。一、今天完成后要达…

2026/7/29 5:27:22 阅读更多 →

最新新闻

NotebookLM:AI驱动的PDF智能解析与知识管理工具

NotebookLM:AI驱动的PDF智能解析与知识管理工具

1. NotebookLM:用AI重新定义PDF文档处理与知识管理上周我在整理一份200页的技术白皮书时,突然意识到传统PDF阅读方式的低效——我们花费80%时间在重复阅读和手动标注上。直到试用谷歌实验室的NotebookLM,这个专为深度阅读设计的AI工具彻底改变…

2026/7/29 5:36:25 阅读更多 →
Linux入门DAY7

Linux入门DAY7

#嵌入式开发基础##Linux##C语言#前言本篇整理C语言流程控制关键字与一维数组核心知识点,适合C语言入门复习,包含 break/continue/goto 区别、数组定义、初始化、内存特性、越界风险等高频考点。一、跳转语句1. break- 作用:跳出当前所在循环&…

2026/7/29 5:36:25 阅读更多 →
DF创客社区年度编辑选择奖:解读硬件开发趋势与最佳实践

DF创客社区年度编辑选择奖:解读硬件开发趋势与最佳实践

1. 奖项的诞生:从社区生态到年度标杆每年年底,各大科技媒体和社区都会推出自己的年度榜单,这几乎成了一种惯例。但说实话,很多榜单看下来,总有种“隔靴搔痒”的感觉,要么是商业气息太重,要么是评…

2026/7/29 5:36:25 阅读更多 →
2026企业级AI Agent工具推荐:主流搜索基座对比评测与场景化导购

2026企业级AI Agent工具推荐:主流搜索基座对比评测与场景化导购

2026 年,企业级 AI Agent 的部署不再停留在概念验证,而是锚定实际业务产出。与此同时,更深层的落地挑战也逐渐显现:大多数 AI 工具擅长提供建议、分解步骤,却无法在真实系统中把任务真正推进到完成。一条完整的业务链路…

2026/7/29 5:36:24 阅读更多 →
别急着把模型写进生产:先让它们用同一套业务题试岗

别急着把模型写进生产:先让它们用同一套业务题试岗

产品团队挑大模型,很容易被一次漂亮的演示带偏。 让模型写一封邮件,几个候选都像模像样;换成真实任务,差别马上出来:有人漏掉 JSON 字段,有人识别错票据,有人会调用工具却传错参数,…

2026/7/29 5:36:24 阅读更多 →
Unity WebView加载监控视频黑屏卡顿?跨平台解决方案全解析

Unity WebView加载监控视频黑屏卡顿?跨平台解决方案全解析

1. 项目概述:当Unity WebView遇上监控视频在Unity项目中集成WebView组件来加载网页内容,已经是一个相当成熟的技术方案,尤其是在需要展示动态网页、用户协议或者内嵌Web应用时。然而,当这个需求从简单的图文页面,转向一…

2026/7/29 5:35:24 阅读更多 →

日新闻

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:00:23 阅读更多 →
AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础 在上一期「AI编程系列」中,我们学习了如何构建一个基础的 AI 问答系统,通过简单的输入输出让模型回应问题。但现实世界中的 AI 应用往往需要处理更复杂的场景:…

2026/7/29 0:00:23 阅读更多 →
AI智能体开发实战:从工具调用到企业级部署

AI智能体开发实战:从工具调用到企业级部署

1. 从被动问答到主动执行:AI Agent的范式转变过去两年,大语言模型最显著的应用形态是聊天机器人——用户提问,AI回答。但真正的生产力革命发生在2023年下半年:当AI学会主动调用工具完成任务时,生产力工具的历史被彻底改…

2026/7/29 0:00:23 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻