
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
解决:用官方库提供的 `GPIO_ReadOutputDataBit / GPIO_SetBits / GPIO_ResetBits` 来实现翻转。// 初始化 PB10。
单片机使用环形缓冲区,是为了在有限的RAM资源和有限的CPU算力下,实现高效、实时、非阻塞的数据吞吐,特别是在处理中断驱动的高速外设(如UART, SPI, DMA)时,它是不可或缺的标准组件。读走 A: [A, B, C, D] --> 搬运 B,C,D --> [B, C, D, 空]读走 B: [B, C, D, 空] --> 搬运 C,D --> [C, D, 空, 空](每次都要大规模搬
确保 `lv_conf.h` 中 `LV_HOR_RES_MAX` 和 `LV_VER_RES_MAX` 设置为 128 和 160。- 确保 `image_data.h` 中只有声明:`extern const uint16_t image_data[];- [CH32V307 数据手册](https://www.wch.cn/products/CH32V307.html)- 更新 `obj/U
**OLED屏幕**:0.96寸 SSD1306(128x64分辨率,I2C接口)- **TFT屏幕**:1.77寸 ST7735(128x160分辨率,SPI接口)1. **显示驱动开发**:掌握了SSD1306和ST7735驱动的开发方法。1. **硬件SPI**:使用硬件SPI替代软件模拟,提高传输速度。3. **FreeRTOS应用**:学会了多任务编程和任务间协调。2. **DMA传输*
因为:你已经用的是FreeRTOS所有逻辑都在:任务软件定时器👉loop()只是 Arduino 的历史遗留。
特性FreeRTOS 任务 (Task)Linux 线程 (Pthread/LWP)内存可见性全局可见(扁平内存模型)进程内可见,进程间隔离硬件访问直接访问(寄存器操作)通过系统调用(驱动程序)调度核心严格实时(高优先级必抢占)公平优先(兼顾所有线程)运行权限特权模式 (通常)用户模式切换开销极低 (保存寄存器即可)中等 (涉及内核态切换、信号处理)崩溃后果往往导致系统复位导致进程终止(通常不影响
Mutex = 一把钥匙共享资源 = 一个上锁的箱子(库存)拿到钥匙的任务👉 才能动库存没钥匙的任务👉 必须等// 拿钥匙// 还钥匙// 👇👇👇 这里就是临界区// 👆👆👆👉被 Mutex 保护的代码块就叫临界区本程序通过 FreeRTOS 的 Mutex 机制,对多个任务访问共享库存变量的临界区进行保护,避免了由于任务并发执行导致的数据竞争和库存超卖问题。
在嵌入式开发中,**启动文件(Startup Code)**是系统上电后首先执行的代码,负责初始化微控制器的关键组件。今天我将详细分析 ST 官方提供的文件,带你深入了解 STM32 的启动过程。这是一个针对STM32F10x High Density(高密度)设备设计的启动文件,适用于工具链。设置初始堆栈指针(SP)设置初始程序计数器(PC)指向配置向量表,包含所有异常和中断处理函数的地址初始化
👉 摄像头取一帧👉 包装成 QImage👉 要么发给 UI 显示👉 要么压缩后 UDP 广播👉 再把 buffer 还给驱动信号槽 + 线程调用关系图太好了 👍这一块一旦想通,Qt 线程 + 信号槽你就算“过关”了。下面我给你不用 Qt 术语、用工程思维来讲,再配一张“脑中必须有的调用关系图”。







