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

四川省化工建设有限公司网站建设一个淘宝客网站

四川省化工建设有限公司网站,建设一个淘宝客网站,海拉尔网站建设+网站设计,广州企业网站建站文章目录 一、定时器理论1.1定时器创建和使用 二、定时器实践2.1周期触发定时器2.2按键消抖 一、定时器理论 定时器是一种允许在特定时间间隔后或在将来的某个时间点调用回调函数的机制。对于需要周期性任务或延迟执行任务的嵌入式应用程序特别有用。 软件定时器: …

文章目录

  • 一、定时器理论
    • 1.1定时器创建和使用
  • 二、定时器实践
    • 2.1周期触发定时器
    • 2.2按键消抖


一、定时器理论

定时器是一种允许在特定时间间隔后或在将来的某个时间点调用回调函数的机制。对于需要周期性任务延迟执行任务的嵌入式应用程序特别有用。

软件定时器: FreeRTOS 提供的用于实现定时操作的功能。与硬件定时器不同,软件定时器在 FreeRTOS 的任务调度机制之上运行。
定时器回调函数: 当定时器到期时,FreeRTOS 将调用用户定义的回调函数。

定时器类型分为以下两种:
一次性定时器(One-shot Timer):定时器在到期后自动停止,仅调用一次回调函数。
周期性定时器(Auto-reload Timer):定时器在到期后自动重新启动,周期性地调用回调函数。

1.1定时器创建和使用

回调函数pxCallbackFunction可以使用pvTimerID分辨是哪个定时器
返回值: 成功则返回TimerHandle_t, 否则返回NULL

TimerHandle_t xTimerCreate( const char * const pcTimerName,
const TickType_t xTimerPeriodInTicks,
const UBaseType_t uxAutoReload,
void * const pvTimerID,
TimerCallbackFunction_t pxCallbackFunction );

在RTOS中,每隔一个固定的时间产生中断,中断函数里面可以去判断定时器时间有没有超时,超时后就唤醒守护任务去执行回调函数

其他任务要配置和使用定时器时,是通过定时器命令队列(timer command queue)和守护任务交互,所以守护任务优先级要尽可能高

在这里插入图片描述

所以在启动定时器要有一个xTicksToWait ,当队列满了要设置等待时间

BaseType_t xTimerStart( TimerHandle_t xTimer, TickType_t xTicksToWait );

定时器状态:冬眠(Dormant)和运行(Running)、

在这里插入图片描述
在这里插入图片描述

二、定时器实践

2.1周期触发定时器

创建定时器

static TimerHandle_t xMyTimerHandle;xMyTimerHandle = xTimerCreate("mytimer", 100, pdTRUE, NULL, MyTimerCallbackFunction);

回调函数

void MyTimerCallbackFunction( TimerHandle_t xTimer )
{static int cnt = 0;flagTimer = !flagTimer;printf("MyTimerCallbackFunction_t cnt = %d\r\n", cnt++);
}

启动定时器:把命令通过 定时器队列 发给守护任务,由守护任务来启动定时器


void Task1Function(void * param)
{volatile int i = 0;xTimerStart(xMyTimerHandle, 0);while (1){printf("Task1Function ...\r\n");}
}

结果:每隔100ms进入回调函数
在这里插入图片描述
在这里插入图片描述

2.2按键消抖

在嵌入式开发中,我们使用机械开关时经常碰到抖动问题:引脚电平在短时间内反复变化。针对这个问题,我们在中断函数中添加定时器,在产生中断后定时器延时20ms,假如由于抖动再次进入中断,继续延时20ms直到按键趋于稳定。

在这里插入图片描述

创建定时器, 设置一次触发,延时20ms

static TimerHandle_t xMyTimerHandle;xMyTimerHandle = xTimerCreate("mytimer", 2000, pdFALSE, NULL, MyTimerCallbackFunction);

在回调函数中记录定时器中断次数cnt

void MyTimerCallbackFunction( TimerHandle_t xTimer )
{static int cnt = 0;flagTimer = !flagTimer;printf("Get GPIO Key cnt = %d\r\n", cnt++);
}

按键中断函数中使用定时器消除抖动,通过复位函数xTimerReset往定时器队列写入数据,由守护任务根据队列命令来复位定时器。在这里多次产生中断会多次调用复位函数xTimerReset。时间到达后进入回调函数

void EXTI0_IRQHandler(void)
{static int cnt = 0;if(EXTI_GetITStatus(EXTI_Line0) != RESET){printf("EXTI0_IRQHandler cnt = %d\r\n", cnt++);/* 使用定时器消除抖动 */xTimerReset(xMyTimerHandle, 0); /* Tcur + 2000 */EXTI_ClearITPendingBit(EXTI_Line0);     //清除中断}     
}
http://www.yayakq.cn/news/219949/

相关文章:

  • 潍坊市房屋和城乡建设局网站网站后期维护工作包括哪些
  • 创建网站花钱吗移动公司网络维护
  • 深圳市南山区做网站的小公司网络工程技术适合女生吗
  • Html5手机静态网站设计纯静态网站怎样
  • 沈阳网站开发培训价格国内免费云服务器
  • 网站怎么做能提升ip流量项目网络计划图怎么画
  • 龙岗网站多少钱一级a做爰视频安全网站
  • 便宜的网站设计苏州发布通告
  • 网站内页产品做跳转美工自学网
  • 体育馆网站建设商丘网站建设费用
  • 如何在网站后台添加商品懒人办公ppt模板免费
  • 如何推广自己网站的关键词注册中文域名费用一般多少钱
  • 保定网站制作套餐公司背景墙logo设计
  • 免费网站模板的制作方法网页设计页面尺寸
  • 无锡做网站优化平顶山网站建设费用
  • 福田我要做网站优化比较好网站上放的动画视频是怎么做的
  • 中企中立做的网站好吗温州网站建设公司哪个好
  • 招聘网站分析如何做网页游戏网址
  • 做网站有什么seo排名诊断
  • html5 开发的网站智能建造就业方向及前景
  • 做聚美优品网站得多少钱静安企业网站建设
  • 朝阳网站建设怎么样百度管理员联系方式
  • 织梦网站被挂马怎么处理腾讯广告投放平台
  • 企业vi设计公司标准版seo优化在线
  • 网站群系统建设标准安顺建设局网站
  • 东莞手机手机端网站建设dede中英文企业网站
  • 最好用的免费建站平台雅布设计
  • 手机上上建设网站百度seo怎么关闭
  • 长沙h5手机网站制作游戏工作室加盟
  • 成都定制网站建wordpress 2