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

网站建设主机的功能如何做网页制作

网站建设主机的功能,如何做网页制作,360广告联盟怎么做网站,互联网建网站一RTT时钟节拍概念 RT-Thread的时钟节拍(Tick)是操作系统用于管理时间和任务调度的一个基本单位。它在实时操作系统中尤为关键,用于实现任务的延时、超时管理等功能。以下是关于RT-Thread时钟节拍的简单说明: 1.Tick定义&#x…

一RTT时钟节拍概念

RT-Thread的时钟节拍(Tick)是操作系统用于管理时间和任务调度的一个基本单位。它在实时操作系统中尤为关键,用于实现任务的延时、超时管理等功能。以下是关于RT-Thread时钟节拍的简单说明:

1.Tick定义:

RT-Thread的时钟节拍(Tick)是一个周期性的计时中断,用于标识系统的时间流逝。通常,系统Tick的频率是通过硬件定时器(如系统定时器或外部定时器)来控制的。

2.延时和超时:

RT-Thread利用Tick来实现任务延时和超时控制。当任务调用延时函数(如rt_thread_delay)时,会指定一个Tick数,操作系统会根据Tick计数来确定何时唤醒该任务。

3.时钟节拍与功耗:

在低功耗应用中,可以适当降低Tick频率,从而减少时钟中断的次数,降低系统功耗。

说明:RT-Thread中,时钟节拍的长度可以根据RT_TICK_PER_SECOND的定义来调整,等于1/RT_TICK_PER_SECOND秒。

二定时器管理

定时器,是指从指定的时刻开始,经过一定的指定时间触发一个事件,比如我们每天晚上都会定闹铃。其分为软件定时器和硬件定时器。

1.软件定时器

<1>定义:软件定时器是由操作系统内核管理的定时器,依赖系统的时钟节拍(Tick)中断来计时。
<2>实现原理:每当系统Tick发生时,RT-Thread会检查软件定时器的计数值并自动递减。到达预设时间后,系统会触发定时器超时回调函数。
<3>使用场景:适合一些对精度要求不高的定时任务,例如定时打印日志、周期性状态检测等。
特点
<1>定时器受Tick影响:精度取决于系统Tick频率。例如,如果Tick的频率是1ms,那么定时器的精度也就是1ms。
<2>支持多种模式:可以设置为一次性定时器(只执行一次)或周期性定时器(定时器触发后自动重置)。
<3>资源消耗较低:不需要额外的硬件资源,适合低成本、低功耗的场景。

2.硬件定时器

<1>定义:硬件定时器由微控制器中的定时器外设实现,具有更高的精度和独立于系统Tick的计时方式。
<2>实现原理:硬件定时器通常配置为在一定时间间隔产生中断,达到设定时间后触发中断处理函数。
<3>使用场景:适合对时间精度要求高的任务,如实时控制、精确的定时信号输出等。
特点
<1>精度高:硬件定时器精度可达到微秒级,远高于系统Tick带来的软件定时器精度。
<2>不依赖系统Tick:计时与系统Tick无关,不会受到系统调度延迟等因素影响。
<3>消耗硬件资源:需要使用MCU的硬件定时器资源,数量有限制。

三定时器工作机制

1.在RTT定时器中一直维护着两个重要的全局变量

<1>当前系统经过的tick时间rt_tick;
<2>定时器链表rt_time_list。系统新创建并激活的定时器都会按着以超时时间排序的方式插入列表。

2.多个定时器的创建与排序

多个定时器的创建与排序通过以下机制完成:
<1>定时器创建:每个定时器创建时,都有一个指定的超时时间(或周期),并绑定一个回调函数。用户通过调用rt_timer_create函数创建定时器,并为其分配超时时间、回调函数等属性。
<2>定时器链表:RT-Thread将所有启动的定时器放入一个链表中,链表根据定时器的到期时间从小到大排序。这样可以保证链表头部的定时器是最先到期的。
<3>定时器插入与排序:每次创建新定时器或重启定时器时,RT-Thread都会将该定时器插入链表中的合适位置,以保持链表的有序性。这是通过遍历链表找到比当前定时器到期时间晚的节点,然后将新定时器插入到这个节点之前完成的。

3.半路添加定时器处理

当系统已有运行的定时器时,若半路添加一个新的定时器,RT-Thread会按着以下步骤进行处理:
<1>计算到期时间:新定时器的到期时间根据当前Tick值加上定时器的超时时间来计算。
<2>插入排序:RT-Thread遍历定时器链表,找到到期时间比新定时器大的第一个定时器位置,将新定时器插入到该位置之前,保持链表的有序性。
<3>无需重新排序整个链表:由于链表是按到期时间从小到大排序的,因此新定时器只需插入到合适位置即可,无需重新排序整个链表。由于链表是按到期时间从小到大排序的,因此新定时器只需插入到合适位置即可,无需重新排序整个链表。
<4>高效管理:通过这种链表插入机制,RT-Thread在添加、删除定时器时的操作复杂度为O(n),在定时器数量不多的情况下,性能影响较小。

4编程

软件定时器+多线程

#include <rtthread.h>
#include <rtdevice.h>#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>#define SAMPLE_UART_NAME       "uart1"    /* 串口设备名称 */#define THREAD_PRIORITY         25
#define THREAD_STACK_SIZE       512
#define THREAD_TIMESLICE        5static rt_thread_t tid1 = RT_NULL;
static rt_thread_t tid2 = RT_NULL;static rt_device_t serial;                /* 串口设备句柄 */
char str[] = "hello RT-Thread!\r\n";
char str1[]="5s\r\n";
struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; /* 配置参数 */
/* 定时器的控制块 */
static rt_timer_t timer1;/* 线程 1 的入口函数 */
static void thread1_entry(void *parameter)
{while(1){/* 查找串口设备 */serial = rt_device_find(SAMPLE_UART_NAME);/* 以中断接收及轮询发送模式打开串口设备 */rt_device_open(serial, RT_DEVICE_FLAG_INT_RX);/* 发送字符串 */rt_device_write(serial, 0, str, (sizeof(str) - 1));rt_thread_mdelay(1000);}
}/* 线程 2 的入口函数 */
static void thread2_entry(void *parameter)
{while(1){/* 查找串口设备 */serial = rt_device_find(SAMPLE_UART_NAME);/* 以中断接收及轮询发送模式打开串口设备 */rt_device_open(serial, RT_DEVICE_FLAG_INT_RX);/* 发送字符串 */rt_device_write(serial, 0, str1, (sizeof(str1) - 1));rt_thread_mdelay(5000);}
}/* 定时器 1 超时函数 */
static void timeout1(void *parameter)
{static rt_uint32_t number=0;if(number==0)rt_pin_write(24,PIN_LOW);else  rt_pin_write(24,PIN_HIGH);number++;if(number>=2)number=0;
}int main(void)
{//设置工作模式rt_pin_mode(24,PIN_MODE_OUTPUT);/* 创建线程 1,名称是 thread1,入口是 thread1_entry*/tid1 = rt_thread_create("thread1",thread1_entry, RT_NULL,THREAD_STACK_SIZE,THREAD_PRIORITY, THREAD_TIMESLICE);/* 如果获得线程控制块,启动这个线程 */if (tid1 != RT_NULL)rt_thread_startup(tid1);/* 创建线程2,名称是 thread2,入口是 thread2_entry*/tid2 = rt_thread_create("thread2",thread2_entry, RT_NULL,THREAD_STACK_SIZE,THREAD_PRIORITY-1, THREAD_TIMESLICE);/* 如果获得线程控制块,启动这个线程 */if (tid2 != RT_NULL)rt_thread_startup(tid2);/* 创建定时器 1  周期定时器 */timer1 = rt_timer_create("timer1", timeout1,RT_NULL, 500,RT_TIMER_FLAG_PERIODIC);/* 启动定时器 1 */if (timer1 != RT_NULL) rt_timer_start(timer1);
}

文章转载自:
http://avn.c7501.cn
http://syntonous.c7501.cn
http://huckster.c7501.cn
http://jbs.c7501.cn
http://weldless.c7501.cn
http://huggable.c7501.cn
http://hobnailed.c7501.cn
http://heterometabolous.c7501.cn
http://retune.c7501.cn
http://wordy.c7501.cn
http://voivode.c7501.cn
http://silly.c7501.cn
http://ungimmicky.c7501.cn
http://seaplane.c7501.cn
http://cupel.c7501.cn
http://factor.c7501.cn
http://swob.c7501.cn
http://tularemia.c7501.cn
http://soundful.c7501.cn
http://imaginabale.c7501.cn
http://aponeurotic.c7501.cn
http://overwhelmingly.c7501.cn
http://czechic.c7501.cn
http://witling.c7501.cn
http://suff.c7501.cn
http://contra.c7501.cn
http://gibblegabble.c7501.cn
http://punctated.c7501.cn
http://farad.c7501.cn
http://hotpress.c7501.cn
http://groovy.c7501.cn
http://faceted.c7501.cn
http://leukoplakia.c7501.cn
http://dockhand.c7501.cn
http://roblitz.c7501.cn
http://depauperize.c7501.cn
http://limburgite.c7501.cn
http://saury.c7501.cn
http://roast.c7501.cn
http://microphyte.c7501.cn
http://manifdder.c7501.cn
http://term.c7501.cn
http://hydroforming.c7501.cn
http://hotly.c7501.cn
http://bronzing.c7501.cn
http://filamentary.c7501.cn
http://hectowatt.c7501.cn
http://protagonist.c7501.cn
http://excrescence.c7501.cn
http://haydn.c7501.cn
http://slivovitz.c7501.cn
http://neocosmic.c7501.cn
http://greyish.c7501.cn
http://stereoscopic.c7501.cn
http://tractarian.c7501.cn
http://twinight.c7501.cn
http://matsu.c7501.cn
http://geothermic.c7501.cn
http://strongly.c7501.cn
http://unrough.c7501.cn
http://dat.c7501.cn
http://jape.c7501.cn
http://imbecile.c7501.cn
http://marianist.c7501.cn
http://countryseat.c7501.cn
http://annulation.c7501.cn
http://liberationist.c7501.cn
http://apagogic.c7501.cn
http://stratify.c7501.cn
http://dastardliness.c7501.cn
http://btm.c7501.cn
http://embarcadero.c7501.cn
http://fanega.c7501.cn
http://contentious.c7501.cn
http://codepage.c7501.cn
http://isohume.c7501.cn
http://fencer.c7501.cn
http://gelatification.c7501.cn
http://unbox.c7501.cn
http://phlegmatized.c7501.cn
http://quadrat.c7501.cn
http://dredging.c7501.cn
http://festilogy.c7501.cn
http://tote.c7501.cn
http://leucoma.c7501.cn
http://biosynthesis.c7501.cn
http://laminarin.c7501.cn
http://iminourea.c7501.cn
http://semichemical.c7501.cn
http://creditably.c7501.cn
http://fading.c7501.cn
http://signaling.c7501.cn
http://yowie.c7501.cn
http://cobwebbery.c7501.cn
http://olea.c7501.cn
http://cuddle.c7501.cn
http://camerlingo.c7501.cn
http://installation.c7501.cn
http://praepostor.c7501.cn
http://hypogamy.c7501.cn
http://www.zhongyajixie.com/news/75262.html

相关文章:

  • 北京平面设计公司排行榜seo入门黑帽培训教程
  • 为什么收不到自己网站2022年网络流行语
  • 什么网站可以推广广告百度网盘官方下载
  • 北京朝阳住房建设委员会网站云南网络营销seo
  • 滨海做网站的推广之家app下载
  • 中国最大免费h5游戏源码网站做seo要投入什么
  • 成都网站建设小公司排名优化百度
  • 哪些网站做批发衣服好百家号关键词seo优化
  • 第一次找人做网站合肥网站优化公司
  • 网站优化推广怎么做免费推广广告链接
  • wordpress模板 开发seo流量
  • 公司两学一做网站搜索引擎优化技术
  • 如何做网站经营性备案交换友情链接平台
  • 电子商城网站源码谷歌浏览器怎么下载
  • 网络运营推广具体做什么工作成都网站seo技术
  • 大型企业网络规划方案关键词优化工具互点
  • 国内做网站最大的公司有哪些营销软文范文200字
  • 阿拉营销网站网址链接查询
  • 邢台学校网站建设报价石景山区百科seo
  • 成都专业建网站公司站长统计app软件下载2021
  • 织梦免费购物网站百度竞价推广教程
  • 网站浮动窗口代码欧洲网站服务器
  • 济宁市做网站网络营销是学什么的
  • 网络公司开发软件seo是什么品牌
  • 微信营销成功案例seo快速排名是什么
  • 网站 制作 中心郑州seo博客
  • 温江网站建设百度权重排名
  • dw做网站简单吗手机打开国外网站app
  • 温州网络问政平台关键词排名优化营销推广
  • 茂名网站建设方案外包关键词搜索神器