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

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);
}

http://www.lryc.cn/news/268651.html

相关文章:

  • 【Java集合类不安全示例】
  • cpp_07_类型转换构造_析构函数_深拷贝_静态成员
  • Java 已死、前端已凉?
  • Calico IP_AUTODETECTION_METHOD
  • 百分点科技成为中国“数据要素×”生态合作伙伴
  • 智能优化算法应用:基于孔雀算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • Redis自动部署脚本编写
  • Tinker 环境下数据表的用法
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Row组件
  • JAVA——JDBC学习
  • Flask 用户信息编辑系统
  • Spring DefaultListableBeanFactory源码分析
  • 关于MySQL、分布式系统、SpringCloud面试题
  • 2023年中职“网络安全”——B-5:网络安全事件响应(Server2216)
  • 【论文解读】Learning based fast H.264 to H.265 transcoding
  • [vue]Echart使用手册
  • 视频人脸识别马赛克处理
  • 2023-12-27 Python PC获取鼠标位置,移动鼠标到相应的位置 定时自动模拟鼠标点击,用于简单测试app用
  • 如何解决服务器CA证书过期的问题
  • 计算机基础面试题总结
  • 【算法练习】leetcode链表算法题合集
  • 2023.12.28每日一题
  • 231227-9步在RHEL8.8配置本地yum源仓库
  • 5. 创建型模式 - 单例模式
  • 机器学习之人工神经网络(Artificial Neural Networks,ANN)
  • GetLastError()详细介绍
  • 【unity3D-粒子系统】粒子系统主模块-Particle System篇
  • Windows搭建FTP服务器教学以及计算机端口介绍
  • 安防视频监控系统EasyCVR实现H.265视频在3秒内起播的注意事项
  • CNN实现对手写字体的迭代