零碎的知识点
二向无常
这个作者很懒,什么都没留下…
展开
-
按键的短按、长按和连续的划分
在实际生活中,我们使用到的按键在短按、长按和按键松开时都会触发不同的功能。按键短按后松开和长按后松开的应用比短按和长按的应用较少,我了解的按键短按后松开和长按后松开的应用是在点动控制中。(长按持续)对应的操作(例如让显示的数字一直加一或一直减一),直到松开(这时候就可以添加一个按键长按后松开的对应操作,不过这是可选的)。假设0ms~750ms为短按的判定时间范围,750ms~900ms为持续的判定时间范围。如果还不松开,每隔150ms便检测一次当前按键的状态,如果仍为松开,就触发一次按键。原创 2024-05-11 14:06:00 · 752 阅读 · 0 评论 -
通过单总线实现单片机之间的数据传输
这里要用稍微复杂一些的信号,例如使用600us的高电平+200us的低电平表示逻辑1,用200us的高电平+600us的低电平来表示逻辑0。这样组合起来,可以轻易的分辨出当前接收的是0还是1,也可以避免当多个相同的0或1连续发送/接收时,对于接收方来说无法分辨这其中有几个0和1的情况。一个简单的格式头可以根据引脚空闲状态的低电平来设置,假设引脚的空闲状态为高电平,那么可以使用连续的低电平来作为格式头。的20%左右(时间不用很严谨,因为不同的单片机内部的时钟不同,可以允许一定范围内的误差)。原创 2024-05-11 13:35:53 · 668 阅读 · 0 评论 -
进程和线程的区别(以及什么时候使用它们)
每个进程都有自己独立的虚拟地址空间,包括代码、数据、堆和栈等,并且拥有独立的进程控制块(PCB)。不同的进程间,资源相互独立,一个进程不可以直接访问其他进程的内存空间。线程是进程内部的一个执行单元或子任务,线程共享进程的同一地址空间、全局变量、文件描述符等资源。每个线程拥有独立的程序计数器(PC)、栈和局部变量(类似函数),但不拥有自己的、独立的地址空间。另外,同一进程内的线程之间,若线程发生了错误,可能会影响其他线程,甚至是整个进程。,一个进程的崩溃不会直接影响另一个进程(除非使用了进程间通信)。原创 2024-04-16 20:30:11 · 375 阅读 · 0 评论 -
[C语言]快速排序源码
【代码】[C语言]快速排序源码。原创 2024-04-13 13:45:42 · 127 阅读 · 0 评论 -
FreeRTOS基本介绍
RTOS,Real Time Operating System,实时操作系统,是指具有。FreeRTOS提供了信号量、二值信号量、互斥锁、消息队列等同步机制,以实现。FreeRTOS中,任务的四种状态:运行、挂起、阻塞、就绪。它(RTOS)的首要任务是调动所有资源完成实时控制任务的工作(调度等算法(合作式的调度算法目前已经停止维护)。FreeRTOS是一款。、能支持实时控制系统工作的操作系统。FreeRTOS支持。),其次才是提高工作效率。原创 2024-04-13 10:28:17 · 274 阅读 · 0 评论 -
[C语言]二分查找
进行二分查找的前提是在一个。的数组中查找指定元素。原创 2024-04-08 18:39:27 · 682 阅读 · 0 评论 -
[C语言]冒泡排序
每一轮交换就可以确定一个当前轮次的最小值/最大值。冒泡排序的核心思想是。原创 2024-04-08 18:24:11 · 96 阅读 · 0 评论 -
内存分布
内存分布一般指的是虚拟内存分布。每个进程都有自己的虚拟内存空间,在32位系统中,每个进程对应的虚拟内存空间为4GB(实际上是用多少再分配多少,不会一次性占用4GB)。原创 2024-04-02 20:32:48 · 529 阅读 · 0 评论 -
程序的耦合和内聚
即模块内部各个部分的紧密程度越高越好,模块与模块间的关系越稀疏越好。功能类似的程序都在一个模块内,有利于查找修改等操作。这样当一个模块出现错误时,不会影响到其他模块。,表示一个模块内部各个部分的紧密程度。,表示两个或多个模块之间的关系。原创 2024-04-02 17:17:20 · 355 阅读 · 0 评论 -
[C语言]volatile关键字的含义和应用场景
在C语言中,volatile直译为“易变的”,当它修饰变量后,编译器能够知道不要对该变量进行优化,让CPU每次直接从内存中读取该变量的值(而不是被优化后,让CPU在寄存器中生成该变量的拷贝,直接从寄存器读取变量的值)。原创 2024-03-27 18:34:28 · 302 阅读 · 0 评论 -
嵌入式的定义
就是以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于对于体积、可靠性、功耗、性能等方面有严格要求的。嵌入式的英文翻译为Embedded,直译是嵌入之中的,指的就是嵌入式系统。关键点:应用、计算机技术、可裁剪、专用的、计算机系统。,要求嵌入式开发人员对嵌入式知识体系有清晰的认知。原创 2024-03-27 18:16:48 · 239 阅读 · 0 评论 -
死锁产生的四个必要条件
资源互斥循环等待不可剥夺请求保持。原创 2024-03-27 18:11:17 · 226 阅读 · 0 评论 -
使用RTOS与编写裸机应用程序,它们所需的堆栈大小取决于什么?
-FreeRTOS官网->支持->常见问题->内存使用情况、启动时间以及上下文切换时间。原创 2024-03-14 13:43:46 · 136 阅读 · 0 评论 -
FreeRTOS中,二进制信号量和互斥锁的区别
能够暂时地将互斥量持有者的优先级提升至所有等待此互斥量的任务所具有的最高优先级。持有互斥量的低优先级的任务"继承"了等待互斥量的任务的优先级。机制,但二进制信号量没有。因此,二进制信号量是实现同步的更好选择,而互斥锁是实现简单互斥的更好选择。-- FreeRTOS官网->内核->开发者文档->FreeRTOS互斥锁。补充:二进制信号量,也称为二值信号量,即只具有0和1两种状态的信号量。--FreeRTOS实时内核使用指南->互斥量(及二值信号量)互斥量,也称互斥锁。原创 2024-03-14 10:04:11 · 443 阅读 · 0 评论 -
[C语言]数组名什么时候表示地址,什么时候表示整个数组空间
如:int array[5];如:sizeof(array);除了以上表示整个数组的情况,其他所有情况都是表示首元素地址。3. 在使用取地址符&,以下情况表示首元素地址。原创 2024-01-19 08:57:31 · 449 阅读 · 0 评论 -
[C语言] 什么场合用枚举,什么场合用宏定义?
宏定义可以简单理解为文本替换,它在编译器预处理阶段将 要替换的文本 粘贴到宏的位置。宏定义使用于需要在多个地方使用相同的常量值的情况,例如不同的 .c文件 中(因为宏定义的作用范围是当前宏所在的 .c 文件),或者是定义一些特定的配置选项(作为宏开关)、状态码(例如用数字表示状态,结合宏替换来增加程序可读性)和字符串常量(例如文件名、文件的完整路径名)。枚举提供了一种相对于宏定义更安全、更固定的选项,使用枚举可以简化代码,并且使代码的意图更加明确,枚举的作用范围就是定义的枚举变量的作用范围。原创 2023-10-10 22:01:38 · 290 阅读 · 1 评论 -
直接寻址和间接寻址
直接寻址(Direct addressing)是指在指令中明确要操作的数据的地址,处理器可以直接访问该地址并进行读取或写入操作。 间接寻址(Indirect addressing)是指在指令中给出的是一个指向要操作的数据地址,处理器首先访问该地址,再获取实际数据的地址,最后才进行相应的读/写操作。原创 2023-09-12 11:02:15 · 2461 阅读 · 0 评论 -
立即寻址、立即数
立即寻址(Immediate addressing)是指在指令本身中包含了要操作的数据或常数的值,处理器直接使用指令中的值作为操作数进行运算,而不需要额外的内存读取操作。与直接寻址和间接寻址不同,立即寻址是另一种常见的寻址方式,它适用于需要在指令中使用常数或立即数作为操作数的场景。立即数:在立即寻址方式中直接给出的数,紧跟在操作码之后。原创 2023-09-12 11:12:00 · 338 阅读 · 0 评论