- 博客(19)
- 资源 (2)
- 收藏
- 关注
原创 【无标题】
相当于所有任务(应用程序)的优先级都是一样 的。既然有任务的挂起,那么当然一样有恢复,不然任务怎么恢复呢,任务恢复就是让挂 起的任务重新进入就绪状态,恢复的任务会保留挂起前的状态信息,在恢复的时候根据挂 起时的状态继续运行。(3):运行态→就绪态:有更高优先级任务创建或者恢复后,会发生任务调度, 此刻就绪列表中最高优先级任务变为运行态,那么原先运行的任务由运行态变为就绪态, 依然在就绪列表中,等待最高优先级的任务运行完毕继续运行原来的任务(此处可以看做 是 CPU 使用权被更高优先级的任务抢占了)。
2022-10-08 19:59:40 403 1
原创 Arduino学习篇 FreeRtos的使用
这个是锁以及一些信号量之类的内容后面还会更用法,其目的就是资源分配,大家应该有死锁的基本概念,就是两个任务各自占有对方想要的资源但是两个任务一不愿意放手目前手中的资源,二想抢夺对方手里的资源好让自己运行下去而导致两个任务都停滞的情况,这些东西存在的目地基本就是避免这些情况的,合理高效分配内部资源用的。这里的任务创建使用了xTaskCreate函数,它一般在单核上使用,由于ESP32是双核的,接下来我会在两个核上创建简单任务让他们跑起来。于 16 位架构,BaseType_t 定义的是 16 位有符号数。
2022-09-25 15:11:59 4499 1
转载 Arduino学习篇(四)通信协议
白话点说,通信协议就是通信时候双方约定的规则。打个类比,就像你跟另外一个人交流,你们之间需要一种交流的约定,就是语言。要么都说中文,要么都说英文。通信协议就类似于硬件之间交流的语言。
2022-09-24 10:35:54 4192
转载 Arduino学习篇(三)自定义库
前言在使用mega2560作为控制板时,如果需要控制的模块比较多,那么将代码全部都写在一份文档里会显得十分臃肿,不利于后续的代码维护和进一步开发,所以根据不同的模块编写相对应的类库就很重要了。编写头文件类库由头文件和.cpp文件组成,可以用C++或者C语言来编写。这里我需要做的是一个控制光开关的相关模块,所以我在Notepad首先建立一个OptcialSwitch.h的头文件,这里面会放一些类库中使用到的变量和函数。
2022-09-23 23:18:28 4327 1
转载 Arduino学习篇(二)
① fillSolid()------将LED灯带设置为同一种颜色上述代码将灯带前12个灯珠颜色设置成蓝色。上述代码将从头数的12颗灯珠设置为渐变色,起始颜色为HSV(255,0,255),终端颜色为HSV(255,255,0),过渡方式为短色调过渡。上述代码过渡方式为长色调过渡。程序拓展(1)i
2022-09-23 23:04:00 2504
转载 Arduino学习篇,基础入门
简单来讲arduino就是通过源代码控制开发板的信号输入输出从而实现对一些电子元件的控制,例如LED灯,蜂鸣器,按键arduino程序首先来讲arduino程序是基于C语言,而实现类似对于LED灯和蜂鸣器的简单控制只需简单C语言知识即可实现。arduino程序是基于函数的,而在arduino的库有很多函数,我们只需要调用即可。arduino的程序主体是**setup()函数和loop()**函数以及其它在使用过程中需要构建的函数。setup()函数。
2022-09-23 21:25:07 30395 1
原创 ESP32学习篇(一)环境搭建
总之,操作来操作去我们的最终唯一的目的就是修改系统中所有Python的pip源为国内的源,这样才能加速下载各种依赖,而platformio使用的并不是你系统安装的Python,它会自己下载一个,看.platformio文件夹就知道了(右键Python.exe=》打开文件所在位置,你会发现指向的是.platformio下的Python)。,打开任务管理器,把platformio.exe以及所有的Python.exe进程全部结束掉,一定要全部关掉(实在不行就重启电脑,重启电脑之后不要打开vscode)
2022-09-23 16:15:00 751
原创 51单片机的定时器
计数的,就例如定时器,就是不断的往寄存器里面+1,直到加到寄存器的值溢出了,要么停止计数退出计数,要么重置继续计数。移位寄存器中的数据可以在移位脉冲作用下依次逐位右移或左移,数据既可以并行输入、并行输出,也可以串行输入、串行输出,还可以并行输入、串行输出,或串行输入、并行输出,十分灵活,用途也很广。该位由软件置位和清零。T0被允许计数以后,从初值开始加1计数,当最高位产生溢出时,由硬件置“1”TF0,向CPU请求中断,一直保持CPU响应该中断时,才由硬件清“0”TF0( TF0也可由程序查询清“0”)。
2022-09-01 23:10:53 14079 2
原创 中断系统
0代表低电平触发外部中断。单片机的中断源种类繁多,有外部中断0,在单片机中的字母代号就是,外部中断1就是INT0,定时器0就是T0,定时器1即T1,还有串口中断,ADC中断等等数不胜数。中断的优先级如上图所示,从上到下为外部中断,定时器0,外部中断1,定时器1,串行口。另外按键的使用,一般是写在主函数里面,通过不断的进行扫描判断,但是这样极大的占用了单片机的CPU资源,所以大部分时候都是将按键连接在外部中断触发引脚上,将模式配置为下降沿触发模式,检测到外部中断的引脚从高电平被拉低为低电平时,触发中断。
2022-09-01 22:54:36 449
转载 Arduino ESP8266 使用u8g2图形库 IIC驱动 SSD1306_0.96寸 OLED
对于IIC接口的OLED,需要在程序中指定一下引脚的接口定义,如果是SPI接口,可以参考U8g2库自带例程中SPI接口是使用方法。使用U8g2库进行OLED的显示十分简单,首先要包含两个库,U8g2lib和Wire,后者是IIC通信需要用。,如果你设置setCursor(0, 0),字符串实际是到屏幕外面了,不会显示!字符串的显示,可以使用drawStr函数,也可以使用通用风格的print函数。椭圆的显示与圆的显示类似,只是椭圆可以分别指定x和y方向的半径。三:u8g2库的简介与安装。
2022-09-01 22:18:12 4076 1
原创 第五节 按键的三种用法
首先来认识一下按键延时消抖,按键由于是机械结构,按下的时候难免产生抖动,一般抖动会在按下的时候与松开的时候产生,抖动时间大概是10ms,通常我们手动按键然后释放,这个动作中稳定闭合的时间超过了20ms。软件去抖的具体方法是:当判断有按键按下时,程序延时一段时间,跳过这个抖动区域,之后再检测按键状态。下面的代码是对按键按下的典型判断语句,先判断KEY的值是否为0,如果为0则延时10ms,然后再次读取KEY的值,依然为0则判断为按键按下,进行按键按下的处理代码,最后等待按键松开后退出。
2022-08-24 14:17:57 3695
原创 4-0 51单片机的延时函数
接下来我们要讲单片机的延时函数,那什么是延时函数呢,其实在我们单片机代码中,每次执行一条代码是很快的,也就几微秒左右,那有时候我们想让某一条代码执行后等待一阵子,再去执行下一条,这时候就需要用到延时函数了。最简单的延时函数也就是让cpu处于跑空的状态,也就是利用一段while函数来跑空,什么都不干,等while跑完了,再来执行下一条,我们本章先讲这种最简单吗,也是最浪费cpu资源的一种办法。已知用while循环执行一次自减运算约为2微秒,因此我们只需要将其执行50次就可以达成延时100微秒的目的。...
2022-07-28 17:13:34 13152 5
原创 5-0 51单片机流水灯
那么如何实现流水灯效果呢,我们知道,在单片机中,1是代表高电平,0是代表低电平,当灯为共阳的时候,我们只需要让对应的端口为低电平(为0)的时候,那么对应的灯就会亮,那么要实现流水灯,不外乎就是让灯P10到P17依次点亮。也就是让P10到P17灯的电平从01111111,变成10111111,变.....,变化到11111110,也就是让0在这这8位中依次位移,要实现这个效果,就需要用到位移这个概念,(这里的位移可不是游戏里面的位移哦),位移有算术移位、逻辑移位、循环移位。逻辑右移,左边空缺的位统一添0;..
2022-07-28 16:08:56 2058
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人