FreeRTOS第三天

1.GPIO是什么?

通用输入输出接口

2.VCC是什么?VCC通常是多少V?

VCC是电源,VCC通常是3.3伏或者5伏

3.FreeRTOS任务有几种状态,分别是什么状态?

四种状态:创建态,运行态,阻塞态,挂起态

4.PWM是什么?

脉冲调制,用来调节电压

5.占空比是什么?

高电平时间/整个周期时间的比例

6.FreeRTOS是什么?

FreeRTOS是开源的实时的操作系统

7.FreeRTOS和Linux的区别?

内存上:FreeRTOS占用的空间比较小,Linux占用的空间大。

应用上:FreeRTOS应用在嵌入式系统,Linux应用在嵌入式系统,也可应用于桌面系统

性能上:FreeRTOS没有Linux操作系统性能强。

FreeRTOS是实时操作系统,Linux是通用操作系统

8.描述一下串口的数据帧格式?

数据位,起始位,校验位,停止位

 9.定时器的定时时间怎么计算?

 (预分频系数+1)*(重装载值+1)/48M

10.ADC是什么?

模拟数字转换器,模拟信号是连续的信号,数字信号是不连续的信号

11.FreeRTOS创建任务有几种方式

静态创建和动态创建

12.串口中的波特率是什么?波特率设置有没有需要注意的?

波特率表示数据的传输速度,波特率越大传输的效率越快,需要注意的是单片机的波特率要和电脑设置一致。

13.DMA是什么?

直接存储器存储设备。使用DMA可以减轻CPU的负担,提升CPU的资源利用率。DMA传输数据比较快,适用于处理图片、视频、音频等数据量较大的场合。

14.任务的挂起和任务的删除有什么区别?

任务挂起:任务还存在,但是不执行

任务删除:删除任务,任务不存在。

15.说一下FreeRTOS有哪几种调度算法?

时间片轮询调度,协作式调度,抢占式调度

=============================================

1.总结任务调度算法之间的区别,重新实现一遍任务调度算法的代码。

        抢占式任务调试

/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void *argument)
{/* USER CODE BEGIN StartDefaultTask *//* Infinite loop *///osDelay(4000);int i=0;for(;;){		printf("StartDdfaultTask is start\r\n");if(myTask02Handle==NULL){myTask02Handle=osThreadNew(StartTask02,NULL,&myTask02_attributes);}printf("StartDdfaultTask is end\r\n");osDelay(500);}/* USER CODE END StartDefaultTask */
}/* USER CODE BEGIN Header_StartTask02 */
/**
* @brief Function implementing the myTask02 thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_StartTask02 */
void StartTask02(void *argument)
{/* USER CODE BEGIN StartTask02 *//* Infinite loop */osDelay(4000);for(;;){printf("StartTask02\r\n");osDelay(500);}/* USER CODE END StartTask02 */
}

        时间片轮询式调度

void StartDefaultTask(void *argument)
{/* USER CODE BEGIN StartDefaultTask *//* Infinite loop *///osDelay(4000);int i=0;for(;;){		printf("StartDdfaultTask is start\r\n");for(i=0;i<10000000;i++){;}printf("StartDdfaultTask is end\r\n");osDelay(500);}/* USER CODE END StartDefaultTask */
}/* USER CODE BEGIN Header_StartTask02 */
/**
* @brief Function implementing the myTask02 thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_StartTask02 */
void StartTask02(void *argument)
{/* USER CODE BEGIN StartTask02 *//* Infinite loop */osDelay(4000);for(;;){printf("StartTask02\r\n");osDelay(500);}/* USER CODE END StartTask02 */
}


2.总结静态创建任务和动态创建任务的区别,以及动态创建任务和静态创建任务的源码分析步骤

        动态创建任务不需要主动提供栈的空间,静态创建任务需要提前提供栈的空间。

        动态可以随时创建,随时删除,静态创建任务无法随时创建,随时删除。

        动态创建任务更加灵活消耗CPU的资源比较多,静态创建任务消耗资源少

3.总结任务的状态,以及任务状态之间的转换关系。

Ready:当任务被创建出来后就会进入到就绪态

Running:当任务正在执行就是运行态

Blocked:等待某一个事件

Suspended:任务被挂起,无法执行,但是任务还是存在

Ready->Running:当调度器选择了当前任务,让当前任务的代码执行。
Running->Ready:当任务执行结束后,重新进入就绪态


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/587421.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cf937Div4E题F题

题目要找到一个长为k的子串,使得x个相同的k相连长度和s相同且对应字符中只能有一个地方对应的字符不同, 那是不是说明s也能分成x段,且最多有一段中的一个字符不同,否则就不满足要求,那我们现在要讨论这个不同的字符在哪,如果在第一段比如sabaa aaaa aaaa aaaa,如果我们取了abaa…

Linux系统下安装jdk与tomcat【linux】

一、yum介绍 linux下的jdk安装以及环境配置&#xff0c;有两种常用方法&#xff1a; 1.使用yum一键安装。 2.手动安装&#xff0c;在Oracle官网下载好需要的jdk版本&#xff0c;上传解压并配置环境。 这里介绍第一种方法&#xff0c;在此之前简单了解下yum。 yum 介绍 yum&…

2023年第十四届蓝桥杯 - 省赛 - C/C++大学A组 - A.幸运数

IDEA 直接暴力循环。 Code Python def check_num(num):str_num str(num)# 先判断是否含有偶数个数位if len(str_num) % 2 ! 0:return Falsestr_num_list list(str_num)# 分成前半部分和后半部分left_num_list list(map(int, str_num_list[:len(str_num) // 2]))right_nu…

HarmonyOS 应用开发之同步任务开发指导 (TaskPool和Worker)

同步任务是指在多个线程之间协调执行的任务&#xff0c;其目的是确保多个任务按照一定的顺序和规则执行&#xff0c;例如使用锁来防止数据竞争。 同步任务的实现需要考虑多个线程之间的协作和同步&#xff0c;以确保数据的正确性和程序的正确执行。 由于TaskPool偏向于单个独…

06 | Swoole 源码分析之 Coroutine 协程模块

首发原文链接&#xff1a;Swoole 源码分析之 Coroutine 协程模块 大家好&#xff0c;我是码农先森。 引言 协程又称轻量级线程&#xff0c;但与线程不同的是&#xff1b;协程是用户级线程&#xff0c;不需要操作系统参与。由用户显式控制&#xff0c;可以在需要的时候挂起、或…

二维数字滤波器设计

Rafael C. Gonzalez “Digital Image Processing”的错误 按理说这本书的第三作者Steven是数字信号处理出身&#xff0c;他本人又对信号处理非常熟悉&#xff0c;不能理解为什么这本书的频域滤波器一章几乎没有对的地方。 对于巴特沃斯等模拟滤波器&#xff0c;利用全通带减去…

The Google File System [SOSP‘03] 论文阅读笔记

原论文&#xff1a;The Google File System 1. Introduction 组件故障是常态而非例外 因此&#xff0c;我们需要持续监控、错误检测、容错和自动恢复&#xff01; 按照传统标准&#xff0c;文件数量巨大大多数文件都是通过添加新数据而不是覆盖现有数据来改变的&#xff0c;因…

Vue基础配置、组件通信、自定义指令

基础配置 Vue框架已经集成了webpack配置 小注意点 vbase 快速生成vue模板 组件名必须是多词格式(驼峰模式) 具体三种写法: ①小驼峰:abcDef.vue ②大驼峰&#xff1a;AbcDef.vue ③中横线&#xff1a;abc-def.vue 假如文件名不符合多次格式的补救办法&#xff1a; 导出重命名…

【单】Unity _RPG项目中的问题

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a; ⭐…

MuJoCo 入门教程(一)

系列文章目录 前言 一、简介 MuJoCo 是多关节接触动力学&#xff08;Multi-Joint dynamics with Contact&#xff09;的缩写。它是一个通用物理引擎&#xff0c;旨在促进机器人、生物力学、图形和动画、机器学习以及其他需要快速、准确地仿真铰接结构与环境交互的领域的研究和开…

无缝投屏技巧:怎样将Windows电脑屏幕共享到安卓手机?

使用屏幕共享技术的好处是多方面的。首先&#xff0c;它为远程协助提供了极大的便利。当用户遇到电脑操作难题时&#xff0c;技术支持人员可以远程查看用户的屏幕&#xff0c;实时指导解决问题&#xff0c;就像他们身临其境一样。其次&#xff0c;这种技术也为教育和培训带来了…

vue3 记录页面滚动条的位置,并在切换路由时存储或者取消

需求&#xff0c;当页面内容超出了浏览器可是屏幕的高度时&#xff0c;页面会出现滚动条。当我们滚动到某个位置时&#xff0c;操作了其他事件或者跳转了路由&#xff0c;再次回来时&#xff0c;希望还在当时滚动的位置。那我们就进行一下操作。 我是利用了会话存储 sessionSto…