FreeRTOS软件定时器
一、简介

二、实验
//创建一个单次定时器和一个周期定时器,打开两个定时器然后等待10s关闭定时器,此时会发现单次定时器打印1次停止,周期定时器打印5次停止
#include "FreeRTOS_demo.h"#define START_TASK_PRIO 1
#define START_TASK_STACK_SIZE 128
TaskHandle_t start_task_handler;
void start_task( void * pvParameters );/* TASK1 任务 配置* 包括: 任务句柄 任务优先级 堆栈大小 创建任务*/
#define TASK1_PRIO 2
#define TASK1_STACK_SIZE 128
TaskHandle_t task1_handler;
void task1( void * pvParameters );void timer1_callback( TimerHandle_t pxTimer );
void timer2_callback( TimerHandle_t pxTimer );void freertos_demo(void)
{ xTaskCreate((TaskFunction_t ) start_task,(char * ) "start_task",(configSTACK_DEPTH_TYPE ) START_TASK_STACK_SIZE,(void * ) NULL,(UBaseType_t ) START_TASK_PRIO,(TaskHandle_t * ) &start_task_handler );vTaskStartScheduler();
}TimerHandle_t timer1_handle = 0; /* 单次定时器 */
TimerHandle_t timer2_handle = 0; /* 周期定时器 */void start_task( void * pvParameters )
{taskENTER_CRITICAL(); /* 进入临界区 *//* 单次定时器 */timer1_handle = xTimerCreate( "timer1", 500,pdFALSE,(void *)1,timer1_callback );/* 周期定时器 */timer2_handle = xTimerCreate( "timer2", 2000,pdTRUE,(void *)2,timer2_callback );xTaskCreate((TaskFunction_t ) task1,(char * ) "task1",(configSTACK_DEPTH_TYPE ) TASK1_STACK_SIZE,(void * ) NULL,(UBaseType_t ) TASK1_PRIO,(TaskHandle_t * ) &task1_handler );vTaskDelete(NULL);taskEXIT_CRITICAL(); /* 退出临界区 */
}/* 任务一,按键扫描并控制软件定时器 */
void task1( void * pvParameters )
{uint8_t key = 0;xTimerStart(timer1_handle,portMAX_DELAY);xTimerStart(timer2_handle,portMAX_DELAY);vTaskDelay(10000);xTimerStop(timer1_handle,portMAX_DELAY);xTimerStop(timer2_handle,portMAX_DELAY);while(1) {}
}/* timer1的超时回调函数 */
void timer1_callback( TimerHandle_t pxTimer )
{static uint32_t timer = 0;printf("timer1的运行次数:%d\r\n",++timer);
}/* timer2的超时回调函数 */
void timer2_callback( TimerHandle_t pxTimer )
{static uint32_t timer = 0;printf("timer2的运行次数:%d\r\n",++timer);
}
相关文章:
FreeRTOS软件定时器
一、简介 二、实验 //创建一个单次定时器和一个周期定时器,打开两个定时器然后等待10s关闭定时器,此时会发现单次定时器打印1次停止,周期定时器打印5次停止 #include "FreeRTOS_demo.h"#define START_TASK_PRIO 1 #define…...
【Java集合类不安全示例】
文章目录 一、List二、Set三、Map 提示:以下是本篇文章正文内容,下面案例可供参考 一、List 代码如下(示例): public class ZZZZZZZZZZ {public static void main(String[] args) {// ArrList 非线程安全的集合List&l…...
cpp_07_类型转换构造_析构函数_深拷贝_静态成员
1 类型转换构造函数 1.1 why? 基本类型之间的转换,编译器内置转换规则:int -> double 类类型之间的转换,编译器不知道转换规则,需要用户提供:Cat -> Dog // consconv_why.cpp 为什么需要自定义转换 #includ…...
Java 已死、前端已凉?
文章目录 Java 的现状前端技术的现状分析结论 关于“Java 已死、前端已凉”的言论,这种说法更多地反映了行业对技术趋势的一种情绪化反应,而不一定是基于事实的判断。下面我来具体分析这个话题。 Java 的现状 Java 的普及与稳定性:Java 作为一…...
Calico IP_AUTODETECTION_METHOD
在 Calico 中,IP_AUTODETECTION_METHOD 的配置项用于指定 Calico 如何检测容器的 IP 地址。 一、kubernetes-internal-ip模式 其中,kubernetes-internal-ip 是一种特殊的模式,用于在 Kubernetes 环境中检测容器的 IP 地址。具体作用如下&…...
百分点科技成为中国“数据要素×”生态合作伙伴
12月24日,由中国经济体制改革研究会、中国电子、郑州市人民政府、中国经济改革研究基金会联合主办的中国“数据要素”生态大会在郑州召开,百分点科技受邀出席,并获颁中国“数据要素x”2024年度生态伙伴合作证书。 大会邀请了国家数据局党组成…...
智能优化算法应用:基于孔雀算法3D无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于孔雀算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于孔雀算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.孔雀算法4.实验参数设定5.算法结果6.参考文献7.MA…...
Redis自动部署脚本编写
#!/bin/bash ck_ok() { if [ $? -ne 0 ] then echo "$1 error." exit 1 fi } download_redis() { cd /usr/local/src if [ -f redis-7.0.4.tar.gz ] then echo "当前目录已经存在redis-7.0.4.tar.gz&q…...
Tinker 环境下数据表的用法
如果我们要自己手动创建一个模型文件,最简单的方式是通过 make:model 来创建。 php artisan make:model Article 删除模型文件 rm app/Models/Article.php 创建模型的同时顺便创建数据库迁移 php artisan make:model Article -m Eloquent 表命名约定 在该文件中&am…...
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Row组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Row组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Row组件 沿水平方向布局容器。 子组件 可以包含子组件。 接口 Row(…...
JAVA——JDBC学习
视频连接:https://www.bilibili.com/video/BV1sK411B71e/?spm_id_from333.337.search-card.all.click&vd_source619f8ed6df662d99db4b3673d1d3ddcb 《视频讲解很详细!!推荐》 JDBC(Java DataBase Connectivity Java数据库连…...
Flask 用户信息编辑系统
Flask 用户信息编辑系统 web/templates/user/edit.html {% extends "common/layout_main.html" %} {% block content %} {% include "common/tab_user.html" %} <div class"row m-t user_edit_wrap"><div class"col-lg-12"…...
Spring DefaultListableBeanFactory源码分析
目录 一、概述 二、主要功能 三、核心功能解析 Bean定义的存储结构 ConcurrentHashMap的使用和意义 四、总结 一、概述 DefaultListableBeanFactory 是 Spring 框架中的一个核心类,它继承自AbstractAutowireCapableBeanFactory类,实现了 ListableBeanF…...
关于MySQL、分布式系统、SpringCloud面试题
前言 之前为了准备面试,收集整理了一些面试题。 本篇文章更新时间2023年12月27日。 最新的内容可以看我的原文:https://www.yuque.com/wfzx/ninzck/cbf0cxkrr6s1kniv MySQL 索引 说一下有哪些锁? 行锁有哪些? 性能优化 分库分表…...
2023年中职“网络安全”——B-5:网络安全事件响应(Server2216)
B-5:网络安全事件响应 任务环境说明: 服务器场景:Server2216(开放链接) 用户名:root密码:123456 1、黑客通过网络攻入本地服务器,通过特殊手段在系统中建立了多个异常进程,找出启…...
【论文解读】Learning based fast H.264 to H.265 transcoding
时间: 2015 年 级别: APSIPA 机构: 上海电力大学 摘要 新提出的视频编码标准HEVC (High Efficiency video coding)以其比H.264/AVC更好的编码效率,被工业界和学术界广泛接受和采用。在HEVC实现了约40%的编码效率提升的同时&…...
[vue]Echart使用手册
[vue]Echart使用手册 使用环境Echart的使用Echart所有组件和图表类型Echart 使用方法 使用环境 之前是在JQuery阶段使用Echart,直接引入Echart的js文件即可,现在是在vue中使用,不仅仅时echarts包,还需要安装vue-echarts: "…...
视频人脸识别马赛克处理
文章目录 前言一、实现思路?二、Coding三、实现效果 前言 前面几篇文章我们尝试了使用opencv完成图像人脸识别以及识别后贴图或者打马赛克的方法。 偶尔我们也会有需求在视频中将人脸马赛克化,opencv也提供了相应的方法来实现这个功能。 一、实现思路&a…...
2023-12-27 Python PC获取鼠标位置,移动鼠标到相应的位置 定时自动模拟鼠标点击,用于简单测试app用
一、核心源码如下: import pyautogui import timepyautogui.moveTo(600, 800) for i in range(20):time.sleep(0.1)x, y pyautogui.position()print("mouse position:", x, y)pyautogui.click()二、定时自动模拟鼠标点击,模拟键盘按键 impo…...
如何解决服务器CA证书过期的问题
一、问题的提出 最近在学习VPS,在Linux系统里给服务器安装某项服务时,在服务的log里看到下面的错误信息: failed to verify certificate: x509: certificate has expired or is not yet valid: current time 2023-12-25T04:42:38-05:00 is a…...
大模型小白必看:收藏!揭秘京东面试官如何破解多轮RAG“越聊越蠢”的难题
本文深入剖析多轮RAG在对话场景中容易出现的问题——越聊越“蠢”,即系统无法准确理解用户意图。文章指出,主要原因是历史对话内容污染了当前检索query,导致检索偏离用户真实意图。作者提出了四点判断框架:区分四类对象、检索quer…...
告别阿里云物联网平台:用免费公共MQTT服务器玩转ESP32远程监控
告别商业云平台:用免费公共MQTT服务器实现ESP32远程监控 在物联网项目开发中,远程数据传输是核心需求之一。许多开发者习惯性选择阿里云、腾讯云等商业物联网平台,却常常被复杂的配置流程、高昂的服务费用所困扰。实际上,对于个人…...
如何快速掌握LRC Maker:新手制作精准同步歌词的完整指南
如何快速掌握LRC Maker:新手制作精准同步歌词的完整指南 【免费下载链接】lrc-maker 歌词滚动姬|可能是你所能见到的最好用的歌词制作工具 项目地址: https://gitcode.com/gh_mirrors/lr/lrc-maker 在数字音乐时代,你是否曾想为自己喜…...
STM32串口转RS-485双机通信:硬件设计、软件驱动与调试全解析
1. 项目概述:从串口到485,双机通信的工业级实现搞嵌入式开发,尤其是用STM32做控制,串口通信(UART)绝对是绕不开的基础。但如果你想把两个STM32板子连起来,距离稍微远一点,或者环境里…...
告别日志脱敏烦恼:手把手教你用sensitive注解优雅保护用户隐私数据
优雅实现日志脱敏:基于注解的隐私数据保护实战指南 在金融、电商等强合规领域,用户隐私数据保护早已从"可选"变为"必选"。每次看到同事在代码中手动拼接"手机号:"user.getPhone().substring(0,3)"****&qu…...
食品制造 | 品控AI自动化方案主流厂商横评:2026企业级智能体选型与落地实测
2026年,全球食品制造业正处于从“数字化转型”向“智能化深耕”跨越的关键节点。随着国家市场监管总局“互联网AI监管”战略的全面深化,食品安全已不再仅仅依赖于周期性的线下抽检,而是转向了基于AI技术的全时段、全链路实时监控。 从校园食堂…...
解决Claude Code频繁封号与Token不足问题转向Taotoken
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 解决Claude Code频繁封号与Token不足问题转向Taotoken 对于依赖Claude Code作为日常编程助手的开发者而言,服务中断是影…...
从51到Linux:一个嵌入式工程师的五年踩坑与填坑全记录(附避坑清单)
从51到Linux:一个嵌入式工程师的五年踩坑与填坑全记录(附避坑清单) 五年前,当我第一次点亮51单片机的LED灯时,绝没想到这条路上会有这么多隐藏的陷阱。从寄存器配置的字节对齐问题,到Linux驱动中的竞态条件…...
用Proteus玩转Arduino?别忘了这些电阻的‘潜规则’(附光敏电阻模拟方案)
用Proteus玩转Arduino?别忘了这些电阻的‘潜规则’(附光敏电阻模拟方案) 在虚拟原型开发领域,Proteus与Arduino的结合为创客们提供了无限可能。但许多开发者往往忽略了电路仿真中最基础的元件——电阻的巧妙运用。本文将揭示那些鲜…...
通过用量看板深度分析,回顾团队月度大模型API开销明细
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过用量看板深度分析,回顾团队月度大模型API开销明细 对于团队管理者而言,清晰、透明地掌握大模型API的使…...
