嵌入式操作系统
freertos
总体介绍
全局变量
- pxReadyTasksLists是一个链表数组,每个就绪的任务都会被添加到该数组对应优先级的链表中
xSuspendedTaskList是一个链表,挂起的任务将会被添加到这个链表中,并不再参与系统调度直到有任务调用恢复接口将该任务恢复
pxCurrentTCB指向当前任务的TCB - 当调用函数vTaskStartScheduler后,xSchedulerRunning会被设置为pdTRUE,当调用函数vTaskEndScheduler后,xSchedulerRunning会被设置为pdFALSE,函数vTaskStartScheduler和vTaskEndScheduler可以在适当的时候被调用。
GPIO
通过寄存器地址来修改位值。https://www.nowcoder.com/discuss/460819659290394624
数据库
通讯协议
https://www.nowcoder.com/discuss/413289272839614464?sourceSSR=search
USB协议
- USB 采用小端字节顺序,在总线上先传输一个字节的最低有效位,最后传输最高有效位,采用NRZI 编码,
- 若遇到连续的6 个1 要求进行为填充,即插入一个0。
- 所有的USB 包都由SYNC 开始,高速包的SYNC 宽度为32bit,全速/低速包的SYNC段度为8bit。
- 实际接收到的SYNC 产度由于USB HUB 的关系,可能会小于该值。
- USB 是一种支持热插拔的高速串行传输总线,它使用差分信号来传输数据。USB 支持“总线供电”和“自供电”两种供电模式。在总线供电模式下,设备最多可以获得500mA 的电流。USB 体系包括“主机”、“设备”以及“物理连接”三个部分,一个USB 系统中仅有一个USB 主机。USB 体系采用分层的星型拓扑来连接所有USB 设备。
CAN总线
- CAN总线竞争优先级的策略如下:
在总线空闲态,最先开始发送消息的单元获得发送权。
多个单元同时开始发送时,各发送单元从仲裁段的第一位开始进行仲裁。连续输出显性电平最多的单元可继续发送。
具有相同 ID 的数据帧和遥控帧在总线上竞争时,仲裁段的最后一位(RTR)为显性位的数据帧具有优先权,可继续发送。
标准格式 ID 与具有相同ID 的遥控帧或者扩展格式的数据帧在总线上竞争时,标准格式的RTR 位为显性位的具有优先权,可继续发送。
GPIO映射
- STM32 内置外设是与I/O口共用引出管脚,所有内置外设的外部引脚都是与标准GPIO引脚复用的,如果有多个复用功能模块对应同一个引脚,只能使能其中之一,其它模块保持非使能状态。
- 晶体振荡器的引脚在不接晶体时,可以作为普通I/O口。GPIO映射方便了PCB的设计同时减少了潜在的信号交叉干扰。
定时器模块
- ①PSQ(分频寄存器)、APR(比较寄存器)、TCNT(计数寄存器)为定时器核心寄存器
②为了确保输出脉冲信号为理想需求的,减小输出偏差,一般常规操作是在定时器未开始工作时或者停止工作时,完成核心寄存器的配置
指针
- 32位系统下任何类型指针的长度都是4个字节;指针的数据类型声明的是指针实际指向内容的数据类型;野指针是指向未分配或者已经释放的内存地址
符号运算
- 位运算中,操作数每右移一位,相当于操作数除以2
SPI
- SPI总线中,有两个比较核心的两个名词,分别是时钟极性(CKP)和时钟相位(CKE),这两个的含义如下:
CKP = 0:时钟空闲IDLE为低电平 0
CKP = 1:时钟空闲IDLE为高电平1
CKE = 0:在时钟信号SCK的第一个跳变沿采样
CKE = 1:在时钟信号SCK的第二个跳变沿采样
上面的时钟极性和时钟相位配合,组成了SPI的四种模式,分别是以下四种
CKP = 0 CKE = 0
CKP = 0 CKE = 1
CKP = 1 CKE = 0
CKP = 1 CKE = 1
platform总线
- 当注册驱动时,只有match成功后,才会执行该驱动对应的probe函数
当在platform上注册驱动时,会遍历总线上的设备链接,挨个查找与该驱动匹配的设备
当在platform上注册设备时,会遍历总线上的驱动链接,挨个查找与该设备匹配的驱动
总线在注册时,可以提供该总线对应match函数,下面是platform总线和I2C总线注册时的struct bus_type定义,从该定义可以看出,这两个总线中的match函数不同
任务
- OSPendMulti()用来等待多个内核对象,调用 OSPendMulti()时,如果这些对象中有多个可用,则所有可用的信号量和消息都将返回给调用者,如果没有任何对象可用,则OSPendMulti()将挂起当前任务。OSQPost(),OSSemPost()和OSMutexPost()分别是消息队列,信号量和互斥信号量的发送函数。
计算机网络
OSI:物,数,网,传,会,表,应。
网络地址:分为网络号和主机号。
数据传输:封装与解封装。
TCP/IP
- 体系结构:物,数,网,传,应。
无线局域网WLAN
- 物理层,数据链路层
- MAC层定义了3种访问控制机制。1.CSMA/CA:载波侦听多路访问/冲突避免,可以解决隐蔽站的问题。
2.分布式协调功能DCF
3.点协调功能PCF
C语言
- 回调函数 :解耦,假设库函数不可见,只能通过传入函数指针的方式去调用普通函数。
https://www.runoob.com/w3cnote/c-callback-function.html - 运算符优先级( ! > 算术运算符 > 关系运算符 > && > || > 赋值运算符)
https://blog.csdn.net/yuliying/article/details/72898132
进程
qt
- 打开界面/opt/Qt5.12.9/Tools/QtCreator/bin/qtcreator.sh &
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?