谈一谈RTOS的核心之一:调度器
调度器上下求索,方可得道之精髓引言我还在学校的时候,实验室有一个学长在B站发布了这么一个视频,B站链接在这里,并且将代码开源在github,取名为suos,对于当时的我来说,实时操作系统是一个很新鲜的东西,特别是当看到代码里面的两个函数中的while(1),这完全是超出认知的东西。如今四年已经过去了,不敢说对RTOS的远离了解的很清楚,但是也是管中窥豹,略知一二,今天就记录一下对RTOS的调度器的
调度器上下求索,方可得道之精髓引言我还在学校的时候,实验室有一个学长在B站发布了这么一个视频,B站链接在这里,并且将代码开源在github,取名为suos,对于当时的我来说,实时操作系统是一个很新鲜的东西,特别是当看到代码里面的两个函数中的while(1),这完全是超出认知的东西。如今四年已经过去了,不敢说对RTOS的远离了解的很清楚,但是也是管中窥豹,略知一二,今天就记录一下对RTOS的调度器的
RTOS-任务CPU占用统计在项目开发过程中,有时会需要查看各个任务的资源占用,需要用到rtos的CPU使用统计,其原理也很简单,就是开一个频率特别高的定时器,rtos在运行过程累计各个任务的实际占用时长,继而统计显示FreeRTOSConfig配置//计算CPU使用率 #define configGENERATE_RUN_TIME_STATS 1 //启用运行时间统计功能 #define c
很多嵌入式设备都对功耗有严格的控制,特别是消费电子对功耗的控制更为严格,Tickless是freertos中的一个可选模块,主要实现低功耗功能STM32类芯片的低功耗模式STM32之类的arm芯片通常有三种低功耗模式:睡眠模式(sleep):仅CPU 时钟关闭,其他所有外设时钟比如数字的TMR以及模拟的ADC时钟无影响。注意所有外设时钟都没有被关闭,因此外设还能工作,如果Sleep模式需要进一步降
esp8266作为带有wifi功能的单片机可谓是红极一时,很多厂家用它来做智能开关,同时倒闭的厂家也有很多,最近逛闲鱼发现了一批这样的倒闭插座,买了一批回来玩玩:商家请结一下广告费,八个起包邮,索性一次性买了八个。闲鱼网友五彩斑斓的黑对引脚定义进行了总结(感谢!):16为黄灯5为按键4为继电器拆开设备发现厂家将烧录引脚全引出来了,用USB-TTL进行烧录(这里接线就不用说了吧),旁边的焊盘是IO0
硬件:主控:esp32;屏幕:ili9341@40Mhz软件:开发环境:esp32-idfUI界面:LVGL实现方式:1、在天行数据网申请应用,会得到一个key,在浏览器访问这个特定的网址与key,浏览器会返回一串json数据,其中包含我们所需要的显示的数据。2、使用esp32中的http client demo进行测试,其中在头文件中定义:#define WEB_SERVER "api
在某些屏幕上我们没有触摸功能,则需要使用按键操作控件lvgl总共给了我们四种设备输入接口,分别是1、LV_INDEV_TYPE_POINTER 触摸板或鼠标 2、LV_INDEV_TYPE_KEYPAD 键盘或小键盘 3、LV_INDEV_TYPE_ENCODER 编码器,带有左/右转和推动选项 4、LV_INDEV_TYPE_BUTTON 外部按钮虚拟按下屏幕 我们使用实体按键适用第二种或第四种
在自己的项目中显示中文是必不可少的。lvgl提供了几种显示中文的方法,在这里我们使用其中一种1、点击这里,百问网为我们提供了多种字体下载,选择一个你喜欢的字体下载下来解压到桌面。2、点击这里,lvgl官方给我们提供了字体转换数组的工具查看这里面的选项,Name是生成的.c文件名称与后续的字体对象名称,Size为大小,Bpp与下面的三个可选框都是与质量相关的选项,总体来说质量越高,占用内存越大;下面
LVGL给我们提供了其中动画效果,分别是:lv_anim_path_linear 线性动画lv_anim_path_step最后一步改变lv_anim_path_ease_in 开始时很慢lv_anim_path_ease_out 最后慢lv_anim_path_ease_in_out 开始和结束都很慢lv_anim_path_overshoot 超过结束值lv_anim_path_bounce
第十四课 二进制信号量#include "freertos/semphr.h" xSemaphoreCreateBinary();SemphoreHandle_t Handle;//二进制信号量Handle = xSemaphoreCreateBinary();//创建xSemaphoreGive(Handle);//释放在任务中:xSemaphoreTake(Handle
第十一课 队列集合多个Task写队列数据,一个Task读取队列数据 Queue Set新建两个消息队列,句柄给两个发送函数,新建一个QSet句柄,使用xQueueAddToSet分别添加两个消息队列到Qset,在接收函数中,算了···这个是用的时候看教程吧第十二课 队列邮箱Queue Mainbox与队列集合相反,一个写,多个读邮箱是保持数据,发送方会覆盖数据,接收方不能移除数据,所有函数使用一个