自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 使用江科大串口发送函数发送freertos的vTaskList出现跑飞

无法正确打印 FreeRTOS 的vTaskList输出,核心原因在于 vTaskList与 Serial_Printf。

2025-10-13 23:42:12 245

原创 usart波特率为9600和115200时,发送一句话所耗费的时间分别是多少

(115200 ÷ 9600 = 12),与上述示例中 “13.54 ms ÷ 1.13 ms ≈ 12” 的比例一致。简单来说,波特率越高,传输相同长度的字符串耗时越短 ——115200 波特率的传输速度约为 9600 波特率的。先统计字符数:“Hello World” 是 11 个字符,加上换行符。

2025-10-09 22:29:01 501

原创 stm32延时函数

STM32 官方 HAL 库的延时函数主要是,其实现基于。

2025-10-09 22:13:55 694

原创 ESP32-C3四种工作模式

ESP32-C3 有一个先进的电源管理单元 (PMU),可以灵活地给芯片的不同电源域供电,在芯片性能、功耗和唤 醒延迟之前取得最佳平衡。• Light-sleep 模式 – CPU 停止工作,可选择上电。芯片可由所有唤醒机制唤醒,包括 MAC、RTC 定时器或 外部中断。• Modem-sleep 模式 – CPU 上电,可降低时钟频率。RF 电路在需要时间歇性开启,因此无线可保持连接。• Active 模式 – CPU、RF 电路和所有外设均上电。• Deep-sleep 模式 – 仅 RTC 上电。

2025-09-17 23:11:03 254

原创 OTA 升级在网络中断时能否正常回滚,怎么实现

OTA 升级的回滚能力本质是 “通过双分区隔离风险、引导程序控制启动、全流程校验兜底” 实现的。对于采用双分区设计的主流设备(手机、车机、智能家电等),网络中断时的回滚是 “默认保障机制”,用户通常无需手动操作,设备会自动恢复至升级前状态。而单分区设备则存在回滚失败的风险,这也是当前 OTA 方案普遍向 “双分区 + 引导校验” 演进的核心原因。

2025-09-15 20:53:56 685

原创 IIC的上拉电阻

I2C 总线选择开漏输出,本质是为了满足多设备共享总线通过 “线与” 逻辑避免电平冲突和短路风险;支持多主设备的总线仲裁机制;灵活适配不同电压等级的设备;降低空闲时的功耗。这一设计使得 I2C 总线在简单的两根线(SDA 和 SCL)上,就能实现可靠的多设备通信,成为嵌入式系统中广泛应用的短距离通信协议。没懂?假设一个主机通过上拉电阻把总线拉高,另一个要输出低电平,这个时候总线为什么会是低电平?这个问题的核心在于理解开漏输出的 “拉低能力” 远强于上拉电阻的 “拉高能力”。

2025-09-14 15:43:51 589

原创 GPIO八种工作模式

GPIO(通用输入输出)的八种工作模式是基于 STM32 微控制器的标准分类,这些模式决定了引脚如何响应输入信号或输出电平,每种模式对应不同的内部电路结构和应用场景。

2025-09-14 11:27:24 787

原创 EXTI-外部中断/事件控制器

GPIO 的 “输入模式” 可结合(如 STM32 的 EXTI)实现 “外部中断”(CPU 中断响应)和 “事件捕捉”(外设直接响应,无需 CPU 干预),核心是通过 GPIO 引脚触发 EXTI 的中断请求或事件信号。

2025-09-14 11:23:58 769

原创 FSMC(Flexible Static Memory Controller):灵活的静态存储器控制器

FSMC 是 STM32 实现 “外部存储扩展” 的核心外设,其核心价值在于 **“灵活性” 和 “硬件化时序”**:通过分区地址映射兼容多种静态设备,通过可配置时序适配不同通信要求,最终让 CPU 以极低的资源占用,实现与外部设备的高速数据交互。对于需要驱动 LCD、扩展 SRAM/Flash 的嵌入式项目,FSMC 是不可或缺的技术模块。

2025-09-14 10:46:54 616

原创 Freertos的信号量是全局变量吗

信号量可以包含全局变量作为状态存储,但它的本质是RTOS 提供的 “同步协议”,通过封装阻塞机制和原子操作,解决了全局变量在多线程环境下的低效和不安全问题。

2025-09-13 23:36:24 276

原创 进程和线程在单片机领域讲解

对比维度进程(Process)线程(Thread,RTOS Task)裸机编程(无 OS)资源占用大(独立地址空间、栈、数据段)小(仅独立栈,共享代码 / 全局资源)极小(无额外开销,靠状态机)切换开销大(需切换地址空间、刷新 TLB)小(仅切换栈和寄存器)无(靠中断触发轮询,无切换)适用场景高端单片机(带 MMU,如 STM32MP1)+ Linux中低端单片机(如 STM32F1/F4)+ FreeRTOS极简场景(仅 1-2 个功能,如单一 LED 控制)工程意义。

2025-09-11 22:40:36 1045

原创 在堆和栈的角度看并发和并行

内存区域并发(单核心多任务)中的角色并行(多核)中的角色嵌入式开发注意事项栈每个任务私有,存储局部变量,保证任务切换安全每个核心的任务有独立栈,避免核心间干扰栈大小要足够(避免溢出),但不宜过大(节省内存)堆存储共享数据(全局变量),需用锁保护存储多核共享数据,需硬件同步机制尽量少用动态分配,共享数据要最小化,减少同步开销栈是任务的 “私人工作台”,安全但空间有限;堆是 “公共工作台”,能共享但容易打架,需要 “规矩”(锁)来管理。

2025-09-11 22:22:48 782

原创 静态随机存取存储器(SRAM)中文名解释

静态随机存取存储器(SRAM)是一种。

2025-09-11 22:16:46 458

原创 FreeRTOS 原理与 PendSV 异常机制全面解析

FreeRTOS 通过优先级驱动的任务管理与抢占式调度,实现了嵌入式系统的多任务实时运行;而 PendSV 异常凭借 “可悬起 + 低优先级” 的硬件特性,为 FreeRTOS 提供了安全、高效的上下文切换机制 —— 既避免了中断嵌套冲突,又统一了切换入口,同时兼容高优先级中断的实时响应需求。二者的深度协同,构成了 ARM Cortex-M 架构下嵌入式实时系统的核心运行基础,是理解嵌入式多任务开发的关键技术要点。

2025-09-11 22:08:22 753

原创 RTOS的切换开销

对实时性的威胁:若某任务的周期是 100μs,而每次切换开销是 10μs,意味着 10% 的 CPU 时间被浪费在切换上,可能导致任务无法在截止时间前完成;对功耗的影响:频繁切换会让 CPU 持续处于 “活跃状态”,无法进入低功耗模式(如 ARM 的 WFI 指令),增加嵌入式设备(如电池供电的传感器)的能耗;设计时的权衡。

2025-09-09 22:48:33 940

原创 并发和并行

并发:在(或 CPU 核心数少于任务数)的环境下,操作系统通过 “时间分片”(给每个任务分配极短的执行时间,比如 10 毫秒),让多个任务交替在 CPU 上执行,从而 “模拟出同时运行的效果”。在(或 CPU 核心数≥任务数)的环境下,多个任务被分配到不同的 CPU 核心上,每个核心独立、同步地执行一个任务,实现 “真正的同时运行”。

2025-09-09 17:38:04 811

原创 static和extern

/ 函数内的静态局部变量// ...作用域:仅在当前函数内部可见(和普通局部变量一样)生命周期:不同于普通局部变量(函数结束后销毁),静态局部变量的生命周期与程序 / 固件一致,只会初始化一次,函数退出后值不会丢失。例如:用于记录串口接收的状态(如 “等待起始位”“接收数据中”),即使函数退出,下次调用时仍能保留上一次的状态。// 全局静态变量// ...作用域:仅在当前.c文件中可见,其他文件无法通过extern声明访问(限制了跨文件的可见性)生命周期。

2025-08-20 12:45:20 152

原创 C语言for循环

例子1:for(int n = 1;判断i<STORE_COUNT 不符合。判断i<STORE_COUNT 符合。退出循环,所以这里的j值为512。时停止,中间共循环 99 次。开始,每次加 1,直到。

2025-08-17 21:59:50 180

原创 KEIL字体修改方法

修改安装目录下的配置文件,用记事本打开安装目录下的UV4\global.prop配置文件,把#C\C++Editor flies之后的。关于这里的红色部分就是字体大小了,可自己修改,重启keil就能发现字体的变化。

2025-08-17 20:43:53 389

原创 freertos动态任务创建和删除

我们看到程序运行的顺序是这样:start_task创建完自我删除->task3->task3阻塞->task2->task2阻塞->task1->task1阻塞。这是因为在start任务中先创建task1,并且task1的优先级比start的更高所以会出现task1和task2在task3的前面运行。start任务里依次开启task1,task2,task3,这四个任务的优先级依次是1,2,3,4,(数字越大,优先级越高)黑盒视角:task3运行次数是task2和task1的50倍。2:定义函数入口参数。

2025-02-20 15:01:41 479

原创 初识FreeRTOS

通过xTaskCreate来创建任务,里面的参数对应:入口函数是什么,别名是什么,分配多大的内存,任务优先级等等,然后FreeRTOS后台就会根据函数名自己去调用任务函数,这两个函数会同时独立的运行,让红色灯和蓝色灯同时闪烁。,直到队列中有消息才会回来这里继续往下执行,就和刚才的延时函数是一样的,CPU不会真的停在这里等,而是会跳出去直到满足条件时才会回来继续执行,这种行为就叫。问题二:一颗灭的LED单片机接收串口信息时,指令为A,LED闪烁两次,指令为B,LED闪烁3次。如果用一个单片机呢?

2025-02-17 19:01:20 708

原创 嵌入式基础电路

磁珠FB对高频过滤有更好的效果,对电磁抑制效果好,并且其有更低的功耗,尺寸小巧,相比RC/RL过滤,磁珠在高温高压下的可靠性更高。C2和C3、C4均是去耦电容,去耦电容主要用于滤除电源波动引起的高频噪声和纹波,稳定电源,减少开关噪声在电路板上的传播,并防止电源携带的噪声对电路构成干扰。由于多次信号的叠加,眼图的信号线变粗,出现模糊(Blur)的现象。芯片内存的输入电路一般是使用施密特触发器实现的,其作用是当输入电平高于阈值电压时,其输出一个稳定的高电平,当输入电平低于阈值电压时,其输出一个稳定的低电平。

2025-02-17 16:49:21 1231

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除