logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

UART+ DMA +FIFO+ 空闲中断 (IDLE) + Queue接收数据

摘要:针对STM32串口高波特率下CPU占用率高的问题,提出DMA+空闲中断+消息队列组合方案。DMA负责数据搬运降低CPU负载,空闲中断检测数据包结束,通过消息队列通知任务处理数据。方案实现了硬件自动搬运、实时响应和任务解耦,特别适合FIFO深度较浅的芯片。工作流程包括DMA初始化、自动搬运、空闲中断触发、队列通知和任务处理五个阶段,通过中断服务程序和主任务协同完成高效数据接收与处理。

文章图片
#stm32#嵌入式硬件#单片机
瑞萨FSP库中使用freertos多线程后,为什么默认线程void hal_entry(void)函数中的代码执行不了?

摘要:本文对比了FreeRTOS与裸机模式在瑞萨FSP设计中的区别。裸机模式下,hal_entry中的while(1)是CPU的全部工作;而FreeRTOS模式下,hal_entry仅作为初始化脚本执行硬件Open操作,完成后即退出。若在其中加入while(1)会因优先级问题导致系统卡死。在多线程模式下,main函数仅负责创建任务(如Task_Al_Analysis等)并启动调度器vTaskSta

文章图片
e2stdio环境下使用FreeRTOS创建多任务

本文详细介绍了FreeRTOS中线程创建与配置的全过程。主要内容包括:1)通过FSP Configuration界面创建线程并选择堆分配算法;2)分析5种堆分配方案(heap_1至heap_5)的特性及适用场景,其中heap_4为推荐首选;3)配置线程参数(栈大小、优先级等)及内存分配方式;4)代码生成与多任务测试。文章重点对比了不同内存管理方案的优缺点,为嵌入式开发者提供了实用的FreeRTOS

文章图片
#单片机
在嵌入式项目中为什么常见#if 和 #endif?

摘要:条件编译(#if/#endif)是嵌入式开发中的重要技术,可实现代码选择性编译。主要应用场景包括:1)快速注释大段代码(#if 0);2)灵活切换不同硬件接口(如SPI/I2C);3)调试日志分级管理(通过DEBUG_LEVEL控制)。相比普通if语句,条件编译能在预处理阶段完全移除不需要的代码,有效节省存储空间并提升运行效率。这种技术特别适合资源受限的嵌入式系统开发。

文章图片
#数据库
volatile关键字在嵌入式中的作用

摘要: volatile关键字告知编译器变量可能被外部修改(如中断、多任务场景),禁止优化(如缓存到寄存器),确保每次访问都从内存读取。嵌入式开发中必须使用volatile的三大场景:1)硬件寄存器映射(值由硬件自动更新);2)中断服务程序修改的全局变量(主程序与ISR异步访问);3)多任务共享变量(保证修改对其他任务可见)。此外,外设结构体成员通常整体声明为volatile。核心原则:若变量可能

文章图片
#嵌入式
FreeRTOS中怎么创建队列?为什么要使用队列?

队列是一种先进先出(FIFO)的数据结构,支持入队(Enqueue)和出队(Dequeue)操作。在FreeRTOS中,队列具有重要作用:1) 实现任务解耦,使生产者和消费者无需直接交互;2) 提供任务同步与阻塞机制,提高CPU利用率;3) 保证数据安全,通过临界区保护实现线程安全;4) 作为缓冲层应对流量高峰。队列创建方式包括动态分配(运行时)和静态分配(编译时),各有适用场景。常用操作包括复位

文章图片
#数据结构#操作系统#单片机
FreeRTOS任务调度入门总结

FreeRTOS任务调度机制分析 本文系统阐述了FreeRTOS实时操作系统的任务调度原理。首先介绍了5种任务状态及其转换规则,重点区分了阻塞态与挂起态的核心差异。其次详细说明了Tick时长配置方法,指出1ms是兼顾精度与性能的最佳平衡点。文章深入剖析了5种任务切换触发方式,包括时间片轮转、主动放弃CPU、高优先级抢占等。通过三种典型场景的时序图分析,直观展示了同优先级任务轮转、高优先级任务抢占以

文章图片
为什么FreeRTOS中不用普通delay函数,而多使用vTaskDelay和vTaskDelayUntil

摘要:本文对比了FreeRTOS中的vTaskDelay、vTaskDelayUntil与普通延时函数的区别。普通延时采用忙等待,完全占用CPU;vTaskDelay是相对延时,让出CPU执行权;vTaskDelayUntil实现绝对延时,保证周期任务精确执行。选择建议:非周期性任务(如按键消抖)使用vTaskDelay,周期性任务(如传感器采集)必须用vTaskDelayUntil以避免周期漂移

文章图片
#单片机#嵌入式硬件#stm32
基于瑞萨e2stdio创建TrustZone工程文件

本文介绍了在e2studio环境下开发RA6M5芯片TrustZone功能的项目创建流程。主要内容包括:1)TrustZone项目需要同时创建安全和非安全两个工程,且必须先在同一个工作空间创建安全工程;2)详细说明了两种开发模式及联合开发模式的具体实现步骤;3)重点阐述了安全工程和非安全工程的创建方法、配置要点及编译顺序;4)强调了项目同步机制,建议将安全工程设为非安全工程的引用项目以确保自动同步

文章图片
flash和SRAM有什么区别?

本文对比分析了嵌入式系统中Flash和SRAM两种存储器的特性与应用场景。Flash作为非易失性存储器,具有断电保留特性但读写速度较慢,适合存储固件程序、配置参数等静态数据;SRAM作为易失性存储器,读写速度快但断电数据丢失,主要用于存储线程栈空间、全局变量等动态数据。文章通过对照表清晰呈现了两者在易失性、读写速度和存储内容等方面的核心差异,并提出了实际项目中的存储优化策略:Flash采用Bank

文章图片
#大数据
    共 16 条
  • 1
  • 2
  • 请选择