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

公司的服务器能建设网站吗京icp备案查询

公司的服务器能建设网站吗,京icp备案查询,做ae好的网站有哪些,做网站 我们的工人怎么写目录 1、基础概念1.1、FreeRTOS概念 2、模块学习2.1、任务2.2、调度(Scheduling)2.3、任务间通讯2.4、时间管理2.5、内存管理 3、各模块串联逻辑3.1、任务创建与调度3.2、任务间通讯3.3、时间管理3.4、内存管理 4、示例代码4.1、代码说明 5、学习路线建议…

目录

    • 1、基础概念
      • 1.1、FreeRTOS概念
    • 2、模块学习
      • 2.1、任务
      • 2.2、调度(Scheduling)
      • 2.3、任务间通讯
      • 2.4、时间管理
      • 2.5、内存管理
    • 3、各模块串联逻辑
      • 3.1、任务创建与调度
      • 3.2、任务间通讯
      • 3.3、时间管理
      • 3.4、内存管理
    • 4、示例代码
      • 4.1、代码说明
    • 5、学习路线建议
    • 6、结语

1、基础概念

1.1、FreeRTOS概念

FreeRTOS是一个实时操作系统(RTOS),专为嵌入式系统设计,提供多任务管理、任务调度、时间管理、和资源管理等功能。它是开源的,支持多种微控制器和处理器架构。

2、模块学习

2.1、任务

  • 创建/删除任务:使用xTaskCreate()创建任务;
xTaskCreate(TaskFunction, "Name", StackSize, Params, Priority, &Handle);//创建任务 
vTaskDelay(pdMS_TO_TICKS(ms));  // 阻塞任务
vTaskDelete(TaskHandle); //删除任务
注意:优先级数值越大越高,Priority(configMAX_PRIORITIES) 定义最大优先级数。
  • 任务状态:就绪、运行、阻塞、挂起;
  • 任务优先级:设置和获取任务优先级;

2.2、调度(Scheduling)

  • 调度算法:基于优先级的抢占式调度;
  • 时间片轮转:在相同优先级任务之间进行时间片分配;

2.3、任务间通讯

  • 队列(Queue):用于任务键传递消息;
QueueHandle_t xQueueCreate(QueueLength, ItemSize);  //创建队列
xQueueSend(QHandle, &Data, pdMS_TO_TICKS(timeout));  //向队列发送数据
xQueueReceive(QHandle, &Buffer, timeout);  //从队列接收数据
  • 信号量(Semaphore):用于任务同步和互斥;
SemaphoreHandle_t xSemaphoreCreateBinary();  //创建二值信号量
xSemaphoreCreateMutex();  //创建互斥信号量
xSemaphoreCreateCounting(Count, MaxCount);  //创建计数信号量
xSemaphoreTake(SemHandle, timeout);  //获取信号量
xSemaphoreGiveFromISR(SemHandle, &HigherPriorityTaskWoken);  //从中断中释放信号量
xSemaphoreGive(SemHandle);  //释放信号量 
  • 事件组(Event Group):用于多任务的时间通知;
EventGroupHandle_t xEventGroupCreate();  //创建事件组
xEventGroupSetBitsFromISR(EventHandle, BitMask, &HigherPriorityTaskWoken);  //从中断中设置事件位
xEventGroupClearBitsFromISR(EventHandle, BitMask);  //从中断中清除事件位
xEventGroupClearBits(EventHandle, BitMask);  //清除事件位
xEventGroupSetBits(EventHandle, BitMask);  // 设置事件位  
xEventGroupWaitBits(EventHandle, BitMask, AutoClear, WaitAll, timeout); //等待事件位
xEventGroupSync(EventGroupHandle, EventBits, WaitAll, timeout);  //同步事件组

2.4、时间管理

  • 延时函数:使用vTaskDelay()实现任务延时;
  • 定时器:使用软件定时器实现任务;

2.5、内存管理

  • 动态内存分配:使用pvPortMalloc()和vPortFree()进行内存管理,默认动态分配策略;
  • 静态分配:更安全,需预先定义对象(如StaticTask_t);
  • 内存池:使用内存池管理内存分配;

3、各模块串联逻辑

3.1、任务创建与调度

创建多个任务并设置不同的优先级,FreeRTOS会根据优先级调度任务执行。

3.2、任务间通讯

使用队列在任务间传递数据,使用信号量实现对共享资源的互斥访问。

3.3、时间管理

结合任务延时和定时器,实现定时任务和周期性任务。

3.4、内存管理

合理使用动态内存分配和内存池,确保内存使用高效且避免内存泄漏。

4、示例代码

以下是一个简单的FreeRTOS示例,展示了任务创建、任务间通讯和时间管理的基本用法:

#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"
#include "semphr.h"// 定义队列和信号量
QueueHandle_t xQueue;
SemaphoreHandle_t xSemaphore;// 定义任务函数,任务1:发送数据
void vTaskSender(void *pvParameters)
{int valueToSend = 0;while (1){//等待信号量if(xSemaphoreTake(xSemaphore, portMAX_DELAY) == pdTRUE){// 发送数据到队列xQueueSend(xQueue, &valueToSend, portMAX_DELAY);valueToSend++;// 释放信号量xSemaphoreGive(xSemaphore);}vTaskDelay(pdMS_TO_TICKS(1000)); // 延时1秒}
}// 定义任务函数,任务2:接收数据
void vTaskReceiver(void *pvParameters)
{int valueReceived = 0;while (1){// 接收数据if(xQueueReceive(xQueue, &valueReceived, portMAX_DELAY) == pdTRUE){// 处理接收的数据printf("Received value: %d\n", valueReceived);}}
}//主函数
int main(void)
{// 创建并初始化队列和信号量xQueue = xQueueCreate(10, sizeof(int));xSemaphore = xSemaphoreCreateMutex();// 创建任务xTaskCreate(vTaskSender, "Sender", 1000, NULL, 1, NULL);xTaskCreate(vTaskReceiver, "Receiver", 1000, NULL, 1, NULL); // 启动FreeRTOS调度器vTaskStartScheduler();//程序不应到达这里for(;;);
}

4.1、代码说明

  • 任务创建:创建了两个任务vTaskSender和vTaskReceiver,分别用于发送和接受数据;
  • 队列:使用队列xQueue在任务间传递整数数据;
  • 信号量:使用信号量xSemaphore确保对队列的互斥访问;
  • 时间管理:vTaskDelay()用于控制任务的执行频率;

5、学习路线建议

1.实践顺序:

  • 先掌握任务、队列、信号量->定时器->事件组->内存优化。
    2.调试技巧:
  • 使用uvTaskGetStackHighWaterMart()检测任务堆栈溢出。
    3.拓展学习
  • 优先级反转(互斥量的优先级继承)、看门狗、Tickless低功耗模式。

6、结语

FreeRTOS的核心是任务调度与资源管理,通过队列、信号量等组件实现多任务协作。先分模块验证功能,再逐步组合成完整系统。


文章转载自:

http://FsmqZY01.dwkfx.cn
http://y5jIdUi2.dwkfx.cn
http://shXCdPsw.dwkfx.cn
http://U1z1WU3u.dwkfx.cn
http://54kM9R5j.dwkfx.cn
http://23bY5XzY.dwkfx.cn
http://8yPc1rvC.dwkfx.cn
http://NfuzmNrh.dwkfx.cn
http://uB3DIEfL.dwkfx.cn
http://uHg2VMZv.dwkfx.cn
http://DiyPGynJ.dwkfx.cn
http://E4lRoTui.dwkfx.cn
http://vpmJb1h6.dwkfx.cn
http://2ikPwVHt.dwkfx.cn
http://h8bGZqWN.dwkfx.cn
http://I0hIPv6Z.dwkfx.cn
http://4sPgu2qL.dwkfx.cn
http://NMzCpU3v.dwkfx.cn
http://miXssgqP.dwkfx.cn
http://kd8BuBkk.dwkfx.cn
http://XHf9ckIq.dwkfx.cn
http://Kz62M8Bk.dwkfx.cn
http://g5gvU2Q9.dwkfx.cn
http://jShfN7yZ.dwkfx.cn
http://o2xdeH2R.dwkfx.cn
http://kEptbavj.dwkfx.cn
http://n8hQdtUb.dwkfx.cn
http://cTFmO4FN.dwkfx.cn
http://oHQeTKN0.dwkfx.cn
http://Kb7ifqLt.dwkfx.cn
http://www.dtcms.com/wzjs/641038.html

相关文章:

  • 百度商桥代码后网站上怎么不显示网站制作商城
  • 湖南竞网做网站好吗营销管理网站
  • 网页制作与设计答案无锡做网站优化公司
  • 青海省公路建设市场信用信息服务网站邵东平台网站建设
  • 湖南网站推广建设公司seo门户网站优化
  • 做网站如何接单子电子商务的分类
  • 社区网站建设费用网络产品营销策划方案
  • 焦作市建设工程网站平面设计工作室网站
  • 如何建立网站数据库连接网站换一家做还用备案么
  • Wordpress百万数据查询多久郑州seo外包公司哪家好
  • 电商支付网站建设费进什么科目凡科快图是免费的吗
  • 网站建设技术服务协议济南seo网站排名关键词优化
  • 贵州省建设厅网站多少视频拍摄策划方案
  • 科技网站设计公司学管理培训班去哪里学
  • 做资讯网站需要什么资质品质好的深圳装修
  • 想自己做一个网站应该怎么弄施工企业合规管理检查制度
  • 什么是网站后台建设做网站找浩森宇特
  • 网站建设必须要服务器么有哪些网站是用php做的
  • 网站一般用什么语言写河南网站建设官网
  • 芜湖市网站开发网站建设与管理ppt课件百度云盘
  • 怎么做cpa网站广告牌设计模板图片
  • 企业网站模板 asppc端网站优缺点
  • 荆州市建设厅网站公司注册代理注册
  • 网页模板网站 优帮云做网站的伪原创怎么弄
  • 豫建设标去哪个网站郓城做网站网络公司
  • 什么是网页什么是网站网站开发质保金
  • 网站安全建设总结报告做娱乐网站被坑
  • 成都的网站建设午夜资源站
  • 贵州省交通建设工程质量监督局网站功能性的网站
  • 网站建设制作公司都选万维科技漳州正规网站建设价格