05 2023 档案
项目
摘要:基于FreeRTOS的智能家居系统 (1)基于STM32硬件平台搭建控制系统,使用USART/IIC等通信协议实现模块间通信。 (2)包括语音模块、WIFI模块、温湿度传感器、电机等。 (3)移植FreeRTOS实现多任务调度,支持语音控制、APP控制。 步进电机是通过脉冲信号来进行控制,每输入一个
阅读全文
八股1
摘要:Strlen 和sizeof读取同一个字符串,结果分别是多少? Strlen 和 sizeof 是两个不同的函数,它们的行为不同,用于读取同一个字符串的结果也不同。 Strlen 是 C 语言中的一个函数,它用于计算字符串的长度,不包括末尾的空字符('\0')。 char str[] = "Hell
阅读全文
FreeRTOS 事件
摘要:事件位: 事件位用来表明某个事件是否发生,事件位通常用作事件标志,比如: ● 当收到一条消息并且把这条消息处理掉以后就可以将某个位(标志)置 1,当队列中没有消息需要处理的时候就可以将这个位(标志)置 0。 ● 当把队列中的消息通过网络发送输出以后就可以将某个位(标志)置 1,当没有数据需要从网络发
阅读全文
FreeRTOS 信号量
摘要:二值信号量 二值信号量通常用于互斥访问或同步,二值信号量和互斥信号量非常类似,但是还是有一些细微的差别,互斥信号量拥有优先级继承机制,二值信号量没有优先级继承。 和队列一样,信号量 API 函数允许设置一个阻塞时间,阻塞时间是当任务获取信号量的时候由于信号量无效从而导致任务进入阻塞态的最大时钟节拍数
阅读全文
FreeeRTOS 内存管理
摘要:使用动态内存管理的时候 FreeRTOS 内核在创建任务、队列、信号量的时候会动态的申请RAM。标准 C 库中的 malloc()和 free()也可以实现动态内存管理,但是如下原因限制了其使用: ● 在小型的嵌入式系统中效率不高。● 会占用很多的代码空间。● 它们不是线程安全的。● 具有不确定性,
阅读全文
FreeRTOS 任务
摘要:使用RTOS时,一个实时任务可以作为一个独立的任务,任何一个时间点只有一个任务运行,具体由RTOS调度器决定。 RTOS调度器的职责是确保当一个任务开始执行的时候上下文环境与上一次推出的时候相同,每个任务都有堆栈,任务切换的时候将上下文保存在堆栈中。 任务特性: 1、简单 2、没有使用限制 3、支持
阅读全文