- 博客(251)
- 收藏
- 关注
原创 嵌入式图形库-LVGL v9.6-源码结构
注意:模拟器里 lvgl 库版本,必须和单片机工程里 LVGL 版本完全一致(v8.3.x 或 v9.x,大版本不能错),否则 API 不兼容,大量编译报错。在开发中,使用lv_port_pc_vscode模拟开发,UI 业务代码(src 下的页面、控件逻辑)可以直接在单片机复用。2. 新建单片机工程(ESP-IDF / STM32 Keil/CubeIDE),添加 LVGL 源码(版本对齐)。触摸驱动 + 实现输入回调。新增文件夹后,必须把 c 文件加入编译列表,否则不会编译,报找不到函数。
2026-10-23 15:21:30
190
原创 嵌入式图形库-LVGL v9.6-环境搭建(Windows+VSCode模拟)
将lv_port_pc_vscode\SDL2-2.32.10\x86_64-w64-mingw32\bin目录下的DAL2.DLL和sdl2-config文件拷贝至项目的bin目录下。在simulator.code-workspace项目文件中添加CMake目录。只解压了SDL2包,没有告知项目SDL2包的位置。官网: https://www.libsdl.org。官网: http://mingw-w64.org。官网: https://cmake.org。官网: https://lvgl.io。
2026-10-22 16:28:47
217
原创 嵌入式图形库-LVGL v9.6-基础概念
常见事件:LV_EVENT_CLICKED点击、LV_EVENT_PRESSING按下、LV_EVENT_VALUE_CHANGED值变化(滑块 / 开关)、LV_EVENT_DRAW_PART_BEGIN绘制回调。示例:lv_obj_t *label = lv_label_create(lv_screen_active());注册:lv_obj_add_event_cb(obj, event_handler, LV_EVENT_CLICKED, user_data);推荐:简单排列用 Flex;
2026-10-20 16:29:17
220
原创 ESP32-S3-LCD
/ IO层句柄:代表物理总线(SPI/I2C/I80/RGB),负责收发命令/像素// 面板层句柄:代表屏幕设备,上层绘图、旋转、复位使用// 颜色传输完成回调函数原型特点:内存由用户自己 malloc 分配,驱动不申请 frame buffer;用户管理内存生命周期。关键配置:.user_fbs[0] = user_frame_buffer;
2026-10-19 17:05:43
102
原创 ESP32-S3-RS485
ESP32-S3 无专属 RS485 硬件外设,通常通过片上 UART 串口 + 外部 RS485 收发器(如MAX485、SP3485)实现协议转换,将单端 UART 信号转为差分 RS485 信号,实现远距离、多节点、抗干扰串口通信。RS485 解决了普通 TTL 串口传输距离近、抗干扰差、无法多节点组网的痛点,是工业传感器、楼宇自控、仪器仪表、工控总线、Modbus 通信的基础物理载体。RS485 是一种差分、半双工、多点总线、长距离工业串行通信标准,属于物理层总线规范。
2026-10-18 19:08:19
225
原创 ESP32-S3-TWAI(CAN)
对应 IDF twai_filter_config_t;备注:恢复完成通过 on_state_change 回调 或 twai_node_get_info 查询,函数本身不阻塞等待恢复结束。twai_node_receive_from_isr():中断内调用,把接收到的报文拷贝出来,送入接收队列。on_rx_done(中断回调) → twai_node_receive_from_isr()。功能:重新配置时序;Bus‑Off 后必须执行总线恢复 twai_recover_from_bus_off()。
2026-10-17 18:23:00
176
原创 ESP32-S3-I2C
/I2C命令,标记操作类型(START、WRITE、READ、STOP)。union {//WRITE命令参数结构体//command 设置为 I2C_MASTER_CMD_WRITE 时使用struct {//WRITE操作是否开启ACK校验。//待发送数据指针。//需要写入的总字节数。} write;//READ命令参数结构体//command 设置为 I2C_MASTER_CMD_READ 时使用struct {//读完之后发送的ACK值(ACK / NACK)。
2026-10-15 16:57:34
193
原创 ESP32-S3-Temp_Sensor(内部温度传感器)
可以独立操作温度传感器:休眠模式下,主 CPU 睡眠,ULP 周期性读取芯片温度,温度超标再唤醒主 CPU,做过热保护,非常适合低功耗场景。输出状态信号:SENS_TSENS_OUT[7:0]原始 8bit 温度数据、SENS_TSENS_READY采样完成标志。tsens_xpd / tsens_clk:电源使能、时钟,来自Tsensor_cntl控制器,控制模拟传感器上电、时钟。SENS_TSENS_POWER_UP_FORCE:强制上电;ESP_ERR_INVALID_STATE:尚未使能。
2026-10-14 15:20:52
148
原创 ESP32-S3-Cap_Touch_Sens(电容式触摸传感器)
START:单次测量周期启动使能信号,高电平代表采样周期开启。Pad Voltage:触摸焊盘引脚电压,核心充放电观测波形。DREFH/DREFL:硬件上下参考电压阈值,电压在二者区间内完成往复充放电。Slope: DAC[2:0]:3 位 DAC 配置充放电斜率,DAC 数值直接决定电容充放电快慢。OUT: 硬件比较输出脉冲,脉冲总数就是触摸原始计数值。TIE_OPT:两种采样时序模式配置位(0/1 两种工作模式)。
2026-10-13 16:44:43
237
原创 ESP32-S3-ADC(模数转换器)
CLK_MUX时钟选择器 → DIG_DIV分频器输出DIGADC_CLK → 再经DIG_SAR_DIV二次分频得到DIGADC_SARCLK,供给 ADC1 数字读取链路;填充adc_oneshot_chan_cfg_t → adc_oneshot_config_channel()配置通道衰减。填充adc_oneshot_config_t → adc_oneshot_new_unit()获取句柄。填充adc_continuous_handle_cfg_t,配置采样通道、采样率、DMA 格式。
2026-10-12 19:01:45
186
原创 ESP32-S3-PCNT(脉冲计数控制器)
PCNT(Pulse Counter,脉冲计数控制器)是ESP32-S3内置的专用硬件脉冲计数外设,专为高频脉冲采集、正交编码器测速、脉冲信号统计设计。配置寄存器:PCNT_FILTER_EN_Un(滤波使能)、PCNT_FILTER_THRES_Un(滤波阈值)。PCNT_CHx_POS_MODE_Un(sig 上升沿动作:加 / 减 / 不计数)。PCNT_CHx_NEG_MODE_Un(sig 下降沿动作:加 / 减 / 不计数)。
2026-10-10 17:30:08
150
原创 ESP32-S3-MCPWM(电机控制脉宽调制器)
ESP32-S3 内置MCPWM(Motor Control Pulse Width Modulator,电机专用脉宽调制控制器),是专为工业电机驱动、大功率执行器设计的专用硬件PWM外设。 MCPWM集成电机驱动全套专属硬件机制,聚焦直流有刷电机、无刷电机、步进电机、H桥驱动、电源逆变、大功率调速场景,是ESP32-S3实现工业级电机控制的核心外设。 直流有刷电机 H 桥驱动(DRV8833)。 三相无刷 BLDC 电机驱动。 正交编码器测速、位置
2026-10-09 16:44:49
185
原创 ESP32-S3-LEDC(LEDPWM控制器)
时钟源经过定时器预分频、计数器生成周期计数值,计数值进入 PWM 比较电路,结合占空比、相位参数产生 PWM 波形,结合空闲电平配置与输出使能,输出 PWM 信号。
2026-10-08 15:37:21
315
原创 ESP32-S3-WDT(XTWDT、MWDT、RWDT看门狗)
TIMG0_WDTCONFIG1_REG:配置预分频系数 TIMG0_WDT_CLK_PRESCALE,调整看门狗计数时钟频率,控制看门狗计时速度。TIMG1_WDTCONFIG1_REG 配置预分频系数 TIMG1_WDT_CLK_PRESCALE,调整看门狗计数时钟频率。其他任务需用 esp_task_wdt_add() 或 esp_task_wdt_add_user() 订阅。CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE 开启RWDT看门狗。
2026-09-29 17:32:59
217
原创 ESP32-S3-TIMG(定时器组)
ALARM_VALUE:预设报警阈值(TIMG_TxALARMLO_REG + TIMG_TxALARMHI_REG 拼接 54 位)。返回:ESP_OK / ESP_ERR_NOT_FOUND / ESP_ERR_INVALID_ARG。TB_CLK,每来一个时钟沿计数值 TIMG_VALUE +1 / -1。TIMG_Tx_EN:定时器使能开关,1 = 启动计数,0 = 暂停。TIMG_Tx_LOAD_LO / LOAD_HI:初始加载值。控制信号:TIMG_Tx_ALARM_EN,使能比较报警功能。
2026-09-28 16:37:28
223
原创 ESP32-S3-UART(通用异步收发传输器)
发送:CPU → APB 总线 → Tx_FIFO → Tx_FSM → 信号反向模块 → txd_out引脚。接收:rxd_in引脚 → 信号反向 / 回环选择 → Rx_FSM → Rx_FIFO → APB 总线 → CPU。
2026-09-23 17:56:25
127
原创 ESP32-S3-INTERRUPT(中断矩阵)
中断矩阵 = 片内中断信号交换机。功能:软件自由把任意外设中断信号,连接到任意 CPU 中断通道。意义:带来极高灵活性,区别于传统固定中断线路单片机。
2026-09-22 16:38:07
261
原创 ESP32-S3-GDMA(通用直接存储器访问)
请使用 heap/include/esp_heap_caps.h 中的 heap_caps_malloc() 和 heap_caps_calloc() 函数搭配 MALLOC_CAP_DMA|MALLOC_CAP_CACHE_ALIGNED 分配满足 DMA 和 Cache 对齐要求的内存。gdma_new_channel 已经被移除。现在当申请一个 GDMA 通道时,必须要根据实际使用的总线调用 gdma_new_ahb_channel 或 gdma_new_axi_channel 函数。
2026-09-21 15:50:07
96
原创 ESP32-S3-GPIO(通用输入输出引脚)
分上下两部分:上半区:外设输入选择器(GPIO_FUNCY_IN_SEL) → 外部 GPIO 电平送给片内外设。下半区:外设输出选择器(GPIO_FUNCX_OUT_SEL) → 片内外设信号输出到外部 GPIO。GPIO 矩阵(GPIO 交换矩阵)是芯片内部可编程交叉开关阵列,实现外设信号 对 任意 GPIO 引脚的自由路由映射。
2026-09-20 17:39:34
222
原创 ESP32-S3-FreeRTOS-内存管理
勾选后启用 FreeRTOS 原生堆钩子 esp_heap_trace_alloc_hook / esp_heap_trace_free_hook,每次分配 / 释放打印日志,轻量内存监控。FreeRTOS 内存管理是操作系统内核负责动态内存申请、释放、分片、规整、碎片治理的基础核心模块,是所有动态创建对象(任务、队列、信号量、事件组、定时器)的底层依赖。开启后自动启用 esp_heap_trace_alloc_hook / esp_heap_trace_free_hook,捕获完整内存操作调用栈。
2026-09-19 19:52:10
346
原创 ESP32-S3-FreeRTOS-软件定时器
不会直接修改定时器,而是生成一条TimerMessage_t命令,写入定时器命令队列;// 定时器句柄,本质是Timer_t结构体指针// 定时器回调函数原型典型用法:多个定时器共用同一个回调,通过 ID 区分业务:if(id == 1) printf("周期定时器触发\n");if(id == 2) printf("单次定时器触发\n");
2026-09-18 15:24:24
148
原创 ESP32-S3-FreeRTOS-同步互斥(IPC)
IPC = Inter-Process Communication 进程间通信。在 FreeRTOS 中,“进程” 等价于 “任务 Task”。IPC = 任务与任务、任务与中断之间同步、互斥、传递数据的一套机制。该模型是工业嵌入式典型的多生产者、单消费者队列通信模型:生产者(发送端,3 个独立任务):CAN 总线任务、通用 Another Task、人机界面 HMI 任务;各自采集 / 生成业务数据,封装为统一结构体,投递到共享队列。
2026-09-17 17:32:51
104
原创 ESP32-S3-FreeRTOS-任务管理(Task)
FreeRTOS 最小调度单元,每个任务是一个独立无限循环函数,拥有独立栈、独立优先级、独立运行上下文,互不干扰。任务管理是 FreeRTOS 最核心、最基础的功能,信号量、队列、定时器、互斥锁等所有内核组件,全部依托任务调度机制工作,是 RTOS 多任务编程的基石。
2026-09-16 17:24:29
183
原创 ESP32-S3-FreeRTOS-系统简介
硬件 → 移植层(封装硬件操作) → 内核(调度、任务、IPC 逻辑) → 应用层(业务代码调用 API);反向:应用层业务触发系统调用 → 内核调度决策 → 移植层操作硬件完成切换、定时、中断响应。关键知识点补充:移植层和内核边界:内核只做逻辑,所有寄存器操作、中断控制都交给 Port 移植层,所以 FreeRTOS 可以快速移植到 ARM、RISC-V 等不同架构 CPU;
2026-09-15 17:59:11
119
原创 ESP32-S3-寄存器开发参考
裸寄存器:REG_READ/REG_WRITE直接操作。LL层:调用driver/ll封装函数(推荐产品开发)。// 向寄存器写入数值# include <stdint.h> # include "soc/soc.h" // 向寄存器写入数值 # define REG_WRITE(_r , _v) do {} while(0) // 读取寄存器数值 # define REG_READ(_r)({
2026-09-13 19:49:41
206
原创 ESP32-S3-时钟系统
接收晶振 / RC 时钟倍频生成高频PLL_CLK,再经多路PLL_DIV分频输出PLL_F80M_CLK、PLL_F160M_CLK等高频时钟,供给 CPU、外设、射频。PLL_D2_CLK、PLL_F160M_CLK:高速 SPI、ADC 等高性能外设时钟。片内内置,无需外部元器件,输出RC_FAST_CLK,可经FOSC_DIV分频;引脚XTAL_P/XTAL_N接入,最常用稳定主时钟源,输出XTAL_CLK;引脚XTAL_32K_P/XTAL_32K_N,输出XTAL32K_CLK;
2026-09-08 17:56:40
165
原创 ESP32-S3-MenuConfig
每个组件独立一套配置文件,分为两类:普通组件 Kconfig、全局 projbuild 配置。config 宏名类型 "界面显示文字"[default 默认值][depends on 依赖条件][select 联动开启其他配置][range 最小值 最大值]help多行帮助说明创建main\Kconfig文件或main\Kconfig.projbuild文件。独立组件Kconfig,跨组件全局配置Kconfig.projbuild。
2026-09-07 17:24:56
178
原创 ESP32-S3-开发规范(API约定)
components/xxx/xxx.c、components/xxx/private/、bootloader/port 底层函数;操作动词后置:init / deinit / read / write / register / get / set。IDF 系统通用头(esp_err.h、esp_log.h、esp_partition.h)。使用 esp_err_to_name() 转换错误码为可读字符串,禁止硬编码错误描述。所有硬件 / 系统 API必须返回 esp_err_t,无返回值函数极少。
2026-09-06 21:24:36
250
原创 ESP32-S3-分区表(Partition Table)
地址区间:0x6000_0000 ~ 0x600D_0FFF,总大小 836KB,双总线(Data/Instruction bus)均可访问,可读可写。存放全局 / 静态变量、FreeRTOS 任务栈、系统堆、队列 / 信号量 / 事件组、函数局部栈;内置 AES/SHA/CRC 加密算法、浮点库、底层硬件驱动,节省 Flash 固件体积。内置 AES/SHA/CRC、随机数、浮点运算、数学标准库、底层硬件驱动;直接访问外设、PSRAM、RTC 内存,硬件搬运数据,无需 CPU 介入;
2026-09-04 20:26:50
201
原创 ESP32-S3-烧录调试
OpenOCD 采用服务器-客户端架构来调试嵌入式系统。OpenOCD 服务器通过调试适配器(通常是 JTAG)与目标硬件建立连接,并提供网络接口供 gdb 或 telnet 等客户端发送命令或加载代码。
2026-09-03 22:11:28
207
原创 ESP32-S3-工程管理
这行代码定义了一个常量 led_pin 来表示 LED 所连接的 GPIO 引脚号。gpio_num_t 是 ESP-IDF 中用于表示 GPIO 编号的枚举类型。GPIO_NUM_7 是该枚举中的一个取值,表示编号为 7 的通用 IO 引脚(GPIO7)。从可读性与类型安全角度,建议使用 GPIO_NUM_7 而不是直接写字面值 7。备注不同芯片对 GPIO7 的可用性与限制不同,请检查所用你的开发板的引脚定义。
2026-09-02 20:39:02
234
原创 HAL_SPI (FLASH)
单向发送全部数据完成回调。单向接收指定长度数据完成回调。全双工同步收发全部字节完成回调。DMA 发送缓冲区一半数据传输完成,双缓冲分片处理大数据。DMA 接收缓冲区一半数据接收完成。DMA 全双工收发半缓冲区完成回调。通信故障触发(MODF 主从冲突、OVR 溢出、DMA 异常、超时),可调用HAL_SPI_GetError()定位故障。调用HAL_SPI_Abort_IT异步中止传输完成后触发。
2026-07-09 11:50:51
348
原创 HAL_IIC (EEPROM)
IIC(Inter-Integrated Circuit,集成电路总线,常写为I2C),是一种低速、半双工、同步串行通信总线,专为板内短距离设备通信设计,是嵌入式最常用的传感器通信协议之一。IIC 仅需两根信号线即可实现多设备组网,极大节省单片机引脚资源,广泛用于各类传感器、EEPROM、RTC、OLED、气压、温湿度等外设通信。主机收发完成回调功能:主机中断/DMA普通发送全部数据完成回调。功能:主机中断/DMA普通接收指定长度数据完成回调。从机收发完成回调功能:从机发送数据完成回调。
2026-07-04 16:32:55
365
原创 HAL_CAN
CAN是差分异步多主现场总线,依靠CAN_H/CAN_L差分传输实现强抗干扰,通过ID优先级硬件仲裁避免总线冲突,自带错误容错与自动重发机制,支持多设备远距离组网,是车载与工业控制的核心通信总线。CAN 是嵌入式工业与车载领域的核心总线,区别于普通板级通信总线,具备高抗干扰、多主组网、硬件容错、远距离传输的核心优势。掌握 CAN 时序原理、仲裁机制、过滤器配置、CubeMX工程配置、中断收发实战代码,即可独立完成工业组网、车载设备、机器人多机通信项目开发,是嵌入式高薪进阶的必备核心技能。
2026-07-02 21:47:49
344
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1