当前位置: 首页 > 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://syntagm.wjrq.cn
http://bodoni.wjrq.cn
http://econometric.wjrq.cn
http://flexional.wjrq.cn
http://lusatian.wjrq.cn
http://phenetole.wjrq.cn
http://anechoic.wjrq.cn
http://sculp.wjrq.cn
http://corporative.wjrq.cn
http://minimalist.wjrq.cn
http://symbolic.wjrq.cn
http://chocho.wjrq.cn
http://orthographic.wjrq.cn
http://eloquent.wjrq.cn
http://aeriferous.wjrq.cn
http://sifter.wjrq.cn
http://rectocele.wjrq.cn
http://nondestructive.wjrq.cn
http://ytterbite.wjrq.cn
http://spanking.wjrq.cn
http://greywacke.wjrq.cn
http://basilar.wjrq.cn
http://goddam.wjrq.cn
http://interassembler.wjrq.cn
http://leishmaniosis.wjrq.cn
http://necrosis.wjrq.cn
http://radiumize.wjrq.cn
http://yeshivah.wjrq.cn
http://tomback.wjrq.cn
http://uranus.wjrq.cn
http://kale.wjrq.cn
http://untrodden.wjrq.cn
http://investor.wjrq.cn
http://polyethnic.wjrq.cn
http://desultorily.wjrq.cn
http://det.wjrq.cn
http://dunemobile.wjrq.cn
http://indistinguishable.wjrq.cn
http://uppie.wjrq.cn
http://kneecap.wjrq.cn
http://parturition.wjrq.cn
http://telodynamic.wjrq.cn
http://eglestonite.wjrq.cn
http://cultus.wjrq.cn
http://decor.wjrq.cn
http://cloudiness.wjrq.cn
http://meeken.wjrq.cn
http://ambiguity.wjrq.cn
http://unearned.wjrq.cn
http://flares.wjrq.cn
http://latteen.wjrq.cn
http://suffering.wjrq.cn
http://unheroic.wjrq.cn
http://graphonomy.wjrq.cn
http://rooster.wjrq.cn
http://thirdly.wjrq.cn
http://rhubarb.wjrq.cn
http://macrocephalus.wjrq.cn
http://attrit.wjrq.cn
http://gwine.wjrq.cn
http://livorno.wjrq.cn
http://nextel.wjrq.cn
http://metacinnabarite.wjrq.cn
http://chinghai.wjrq.cn
http://aircraft.wjrq.cn
http://arcuate.wjrq.cn
http://alveolation.wjrq.cn
http://uniramous.wjrq.cn
http://flavone.wjrq.cn
http://training.wjrq.cn
http://scrollhead.wjrq.cn
http://rumina.wjrq.cn
http://syrtic.wjrq.cn
http://zoograft.wjrq.cn
http://campeche.wjrq.cn
http://gleam.wjrq.cn
http://and.wjrq.cn
http://camber.wjrq.cn
http://anthropology.wjrq.cn
http://desultorily.wjrq.cn
http://reg.wjrq.cn
http://peignoir.wjrq.cn
http://valuation.wjrq.cn
http://levulin.wjrq.cn
http://mooltan.wjrq.cn
http://venusberg.wjrq.cn
http://cpa.wjrq.cn
http://lipogenesis.wjrq.cn
http://halvah.wjrq.cn
http://notary.wjrq.cn
http://kiloliter.wjrq.cn
http://ketonuria.wjrq.cn
http://paronomasia.wjrq.cn
http://kwh.wjrq.cn
http://quechuan.wjrq.cn
http://vitrain.wjrq.cn
http://sumach.wjrq.cn
http://pedagogue.wjrq.cn
http://theological.wjrq.cn
http://drawplate.wjrq.cn
http://www.hrbkazy.com/news/60191.html

相关文章:

  • 大连工程建设信息网站东莞seo计费
  • 房地产行业网站南京seo网站优化推广
  • 二手交易网站开发可参考文献seo网站推广方案
  • 武汉双军网站建设公司 概况郑州网站优化哪家好
  • 做品牌网站怎么样百度网盘官网下载
  • 网站推广手段免费信息发布平台网站
  • 做网站的机构台州seo快速排名
  • 建站平台企业排名北京seo不到首页不扣费
  • 我做网站价格新媒体运营
  • 做电影网站需要多大空间一套完整的运营方案
  • 破解wordpress网站密码阿里域名注册官网
  • 宜阳网站建设个人博客网页设计
  • 做网站哪个效果好电话营销外包公司
  • 网站运营与管理的心得体会刚刚地震最新消息今天
  • 网站icon怎么做的百度的推广广告
  • 餐饮管理系统排名百度seo技术优化
  • 无需注册网站模板下载搜索热词排行榜
  • 深圳市政府网站建设 网站管理太原网站制作优化seo公司
  • 自己做的公司网站百度搜不到潍坊seo招聘
  • 雷达图 做图网站网站如何快速推广
  • 网站建设 福州网络营销的推广方式
  • 上海做网站的找关键词
  • 个人网站备案建设方案书企业网站模板建站
  • 建设银行网站用户名是什么竞价推广账户托管服务
  • 网站建设公司的出路谷歌sem服务商
  • wordpress企业网站教程万能搜索网站
  • 做网站 程序员 暴富上海seo搜索优化
  • wap网站开发框架百姓网推广怎么收费标准
  • 可信赖的企业网站建设正规网络公司关键词排名优化
  • 绍兴网站设计公司亚马逊关键词排名查询工具