CAN总线仲裁机制、FreeRTOS任务优先级

盛能杰嵌入式面试全解析:STM32、FreeRTOS、LVGL与CAN实战考点 嵌入式系统开发中,实时操作系统与通信协议是核心基础。FreeRTOS通过任务调度与同步机制保障实时性,CAN总线凭借差分信号与仲裁机制实现高可靠通信,LVGL则提供轻量级图形界面支持。这些技术在工业控制、电力电子等领域价值显著,尤其适用于光伏逆变器、储能变流器等场景,需兼顾通信可靠性与界面响应速度。盛能杰嵌入式岗位面试重点考察STM32平台下FreeRTOS任务划分、CAN报文防丢帧及LVGL移植等实战能力,强调项目经验与问题排查思路。 阅读详情

假设场景:我们要造一辆智能车。

  • 电机要飞快转(FOC控制)——这需要极端的速度,毫秒级响应。

  • 电池要时刻监测(BMS)——这需要极端的可靠,不能死机。

  • 中控屏要导航放歌(智能座舱)——这需要极端的复杂,能跑APP。

这三件事,如果只用一套逻辑(比如裸机)去干,车会翻。所以,我们的核心逻辑是:把合适的活,交给合适的“管理层”。

第一讲:裸机驱动(手搓寄存器)—— 本质是“手动拧螺丝”

生活例子:你想让LED灯亮。就像你家里的开关,火线零线接好,按钮按下去,灯就亮。没有中间商赚差价。

  • 第一性原理:CPU本质上只是一堆“开关”(晶体管)。要让外设工作,就是往特定的“门牌号”(内存地址)写入特定的“1和0”。

  • 手搓流程:

    1. 打开芯片手册(查地图)。

    2. 找到GPIO的地址(比如 0x40020000)。

    3. 配置模式位(配置这个口是输入还是输出)。

    4. 输出高低电平(给电)。

  • 痛点:如果我现在既要让灯闪,又要读取温度,还要处理按键。我只能在 while(1) 里按顺序执行。如果读取温度耗时太长,灯就会卡顿。

  • 实用工作建议:永远不要在生产大项目里纯手搓裸机(除非是极简单的串口打印)。 因为“顺序执行”无法应对多件事同时发生。但手搓寄存器是内功,排查硬件问题时(比如芯片复位不正常),你必须能看懂寄存器值,不能只会调库。


第二讲:RTOS(FreeRTOS)—— 本质是“时间管理大师”+“邮件分拣员”

生活例子:你是公司的CEO(CPU)。你不能亲自去扫地、修电脑、写代码、接电话一起做。你需要一个秘书(RTOS内核)帮你排日程(调度器)。

1. 任务优先级与翻转(重点难点)

  • 优先级本质:当多个任务同时“就绪”,CEO先看谁优先级高。

  • 优先级翻转(第一性原理):本质是“资源被低优先级的人占着茅坑不拉屎”。

    • 生活例子:高优先级的总经理(Task H)要进会议室(共享资源)签合同。推门发现,实习生(Task L)在用会议室打游戏,且把门锁了。总经理只能等。这时候,中层经理(Task M,中等优先级)来了,他不用会议室,但他要给实习生布置一堆杂活。于是CPU(CEO)不停地去给中层经理跑腿,把实习生晾在一边,导致实习生迟迟打不完游戏,会议室永远锁着。总经理(高优先级)被堵死了。

  • 怎么处理(解决方案):

    • 本质逻辑:“谁拿了钥匙,谁就临时提高身价”。

    • 具体操作:FreeRTOS里使用互斥信号量(Mutex),不要用二值信号量。当实习生(低优先级)拿到会议室钥匙时,系统自动把他的“职级”临时提升到和总经理一样高,让他赶紧打完游戏释放锁。释放后恢复原职级。

  • 2. 任务间通信(信号量、队列、事件组)—— 生活中的快递柜

    • 队列(Queue):带数据的快递柜。A任务放数据进去,B任务取。本质是解耦——生产者和消费者不用互相等。

    • 信号量(Semaphore):钥匙串。里面有几把钥匙,就允许几个人同时用厕所。如果是1,就是互斥锁。

    • 事件组(Event Group):打卡机。要等“刹车松开”、“油门踩下”、“档位挂好”这多个事件都发生(逻辑与),车子才能走。

  • 实用工作建议:

    • 不要让两个任务同时写同一个全局变量!必须用队列传递指针。

    • 优先级别设太多层(建议不超过5级),否则调度器计算开销太大。

    • 避坑:中断服务函数(ISR)里绝对不能用 vTaskDelay 阻塞,只能使用 xxxFromISR 带后缀的函数,否则系统会崩溃。


第三讲:CAN总线仲裁机制 —— 本质是“抢麦发言,但讲文明”

生活例子:会议室里(CAN总线),所有人都可以同时发言(广播),但有规定:

  1. 非破坏性仲裁:谁说的“数字”(ID)越小,谁继续讲;数字大的自动闭嘴,默默等下次。

  2. 具体物理原理:CAN总线是“线与”(只要有人拉低,总线就低)。隐性(1)碰到显性(0),显性赢。

    • 所以,ID = 0x001 的刹车信号,永远能打断 ID = 0x100 的雨刮信号。

  • 工作中的血泪教训(重点):

    • 灵魂拷问:如果两帧数据ID相同怎么办?总线上同时发相同ID,两者都会认为仲裁成功,但数据会错乱。

    • 第一性原理解决:ID必须全网唯一! 在BMS电池管理中,电池电压帧(0x100)和温度帧(0x200)必须区分开。

    • 远程帧:请求别人发数据,像“喊一声,把资料扔过来”。

  • 实用工作建议:

    • 画CAN网络拓扑图,把所有节点(VCU、BMS、MCU)的ID列成Excel表。

    • 务必配置好“错误帧”处理。如果总线上有个节点死机疯狂乱发,总线会被它“堵塞”(Bus Off)。工作里一定要开启自动恢复机制,否则整个车机死机。


第四讲:Linux驱动框架(字符设备、设备树、Platform总线)—— 本质是“酒店前台管理系统”

生活例子:你住酒店(Linux内核)。你的房卡(设备节点)是 /dev/mydevice。

  • 裸机 vs 驱动框架:

    • 裸机是你直接去找水电工改线路(危险)。

    • Linux驱动是你把你的需求告诉前台(VFS虚拟文件系统),前台通知楼层管家(Platform总线),管家去找对应的保洁阿姨(Specific Driver)处理。

  • 三大件拆解(第一性原理):

    1. 字符设备(Char Device):像水管。你往 /dev/uart 丢数据,数据像水流一样流出去(顺序读写,无结构)。Key:实现 file_operations 结构体(.open, .read, .write)。

    2. 设备树(Device Tree):酒店的房型图(硬件配置文件)。以前Linux是把“GPIO管脚号、中断号”硬编码在C文件里。换一块板子就要重新编译内核,巨蠢!现在变成 .dts 文件(文本),告诉内核:“我这款板子,I2C1接在地址0x50上挂了温湿度传感器”。本质:数据与代码分离。

    3. Platform总线(虚拟总线):媒人 + 红娘。内核里有很多驱动(供应商提供),也有很多设备(设备树描述的硬件)。Platform总线的工作就是匹配(Match)。当设备树里写着 compatible = "st,stm32-i2c",总线就会去找内核里名字叫 st,stm32-i2c 的驱动,牵上线,执行 probe()(相当于注册结婚,执行初始化)。

  • 实用工作建议:

    • 别怕设备树。它就是一颗树(根节点 /,子节点 soc,孙节点 i2c)。

    • 调试利器:ls /dev 看节点,cat /proc/devices 看主设备号,insmod 加载模块后一定要 mknod 创建设备节点(或者用 devtmpfs 自动创建)。

    • Makefile的坑:编译Linux驱动,内核源码树必须提前编译好。工作里先 make modules_prepare。


第五讲:大综合 —— 如何把这些用在真实工作中?(智能座舱/BMS/FOC)

回到我们开头的智能车。你不能用一个CPU干所有事,现实是异构计算:

  1. FOC智能车(电机控制):跑在 Cortex-M4/M7(单片机) 上,裸机 + 关键中断。因为FOC算法(电流环)需要每 50微秒 中断一次,RTOS的任务调度延迟(微妙级)在极端情况下会造成抖动,所以很多时候底层电流环是裸机中断,速度环/位置环跑在RTOS上。

    • 实用建议:中断里只做PID计算和PWM更新,绝对不打印Log。

  2. BMS电池管理:跑在 RTOS 上,大量使用 CAN总线 和 事件组。需要等“电压稳定”、“电流稳定”、“温度稳定”这三个事件都成立,才允许闭合继电器(上高压)。

    • 实用建议:BMS的CAN数据必须加 CRC校验 和 心跳包(Heartbeat),超时没收到心跳,立即切断主回路。

  3. 智能座舱(中控):跑在 Linux(Cortex-A) 上,用 设备树 配置屏幕LCD和触摸IC,用 Platform总线 挂载WiFi/蓝牙模组。

    • 实用建议:座舱里用 Netlink socket 或者 DBus 通信,别用全局变量,因为进程间内存隔离。


工作的“黄金铁律”

4条建议:

  1. “查寄存器”永远是终极绝招:

    • 无论RTOS还是Linux,调不通时,第一反应不是换代码,而是去读芯片手册中对应外设的寄存器值。比如I2C没ACK,读状态寄存器,看是总线忙还是从机没上电。工程师的底层自信,来自于对数据手册的掌控。

  2. “分层思想”刻进DNA:

    • 写代码时,把 “硬件操作(底层)” 和 “业务逻辑(应用层)” 严格分开。比如点亮LED,底层只提供 led_on(),应用层写 if(温度>50) led_on();。这样,换MCU时,你只用重写底层 led_on,业务逻辑一行不改。这就是驱动的本质。

  3. 日志打印是最佳战友:

    • 不要嫌串口打印烦。在工作里,没有调试器的情况下,printf(或 printk)是唯一的救命稻草。

    • 黄金法则:RTOS里打印要加任务名,Linux里打印要加 dev_info。一定要定义 “错误码” ,别只打印“失败”,要打印“失败码:0xE001”。

  4. 设计一把“看门狗”:

    • 无论你用什么系统,外部硬件看门狗(Hardware Watchdog) 必须启用。这是“最后一道防线”。即便FreeRTOS任务死锁,即便Linux内核panic,只要看门狗没喂,5秒后强制硬件复位。可靠性不是代码写出来的,是“复位”保出来的。

  5. 面试/工作中的谈资:

    • 说到CAN,别只说波特率。要说 “终端电阻(120Ω)一定要匹配,否则反射导致波形畸变”。

    • 说到RTOS,别只说创建任务。要说 “空闲任务(Idle Task)里放低功耗模式,省电”。

    • 说到Linux驱动,别只调函数。要说 “关注内核API的休眠/非休眠特性,在自旋锁里绝对不能用可能休眠的 copy_from_user”。


结语:
记住,搞嵌入式就是搞 “翻译” —— 把人类的逻辑(加减乘除)翻译成寄存器的比特,翻译成总线的电平,翻译成任务调度的优先级。万事万物都是“输入 -> 处理 -> 输出”。你用裸机、RTOS还是Linux,只取决于你对“处理”的实时性、复杂度要求有多高。先让灯闪起来,再让系统跑起来,最后让数据飞起来。

明朝望乡处,应见陇头梅。——宋之问《题大庾岭北驿》

附完整工程!CAN总线实战:基于FreeRTOS的分布式温湿度监测系统(HAL库) 本文详细介绍了基于STM32、FreeRTOS和CAN总线的分布式温湿度监测系统实战方案。通过HAL库驱动,构建了包含主控与从控节点的完整工程,阐述了硬件选型、电路连接、FreeRTOS任务架构设计以及CAN通信协议实现。项目源码完整,提供了从数据采集、CAN总线传输到数据显示与云端上传的全流程解决方案,是学习嵌入式分布式系统开发的优秀实践案例。 阅读详情

相关推荐

STM32裸机+FreeRTOS+Modbus+CAN四阶闭环实战路线

嵌入式开发本质是硬件、固件、协议与调试的深度耦合工程。理解寄存器级时钟配置、RTOS任务调度机制、Modbus RTU帧结构及CAN总线仲裁原理,是构建可靠工业通信能力的基础。这些技术点共同支撑起从传感器采集、多任务调度到现场总线通信的完整闭环,广泛应用于工控设备、智能仪表和边缘节点开发。尤其在中小型企业真实岗位中,对STM32裸机驱动、FreeRTOS移植能力和Modbus/CAN协议栈实现的实操验证,已成为嵌入式工程师的核心准入门槛。

weixin_33901641的博客 282

2025-2026年嵌入式开发面试高频知识点洞察

本文基于八股精(嵌入式开发)约 1037 条 2025-2026 年嵌入式开发岗位真实面试记录,对 20 个高频知识点 的出现次数与代表真题进行统计分析。数据显示,总线通信协议(I2C/SPI/UART/CAN)与 RTOS 体系构成了面试考察的两大主战场,掌握这两条主线即可覆盖绝大部分高频考点。

ocean2103的专栏 307

基于STM32F767与CAN总线的FSAE赛车数字仪表盘开发实战

CAN总线作为汽车电子领域的标准通信协议,以其多主仲裁、高可靠性和广播特性,构成了现代车辆分布式控制系统的数据骨干。其差分信号传输与硬件错误处理机制,为在强电磁干扰环境下实现稳定、实时的数据交换提供了基础。在嵌入式开发中,实时操作系统(RTOS)通过任务调度与优先级管理,有效解决了多任务并发与实时性要求之间的矛盾,是构建复杂、可靠嵌入式系统的关键技术。结合高性能微控制器(如STM32F7系列),开发者能够集成图形界面、处理高速通信并执行复杂算法。这些技术的核心价值在于为**高实时性**与**高可靠性**要求

weixin_30911451的博客 380

音诺ai翻译机调度STM32F1 CAN消息优先级

本文探讨音诺AI翻译机中CAN总线通信的优先级机制与实时性优化,基于STM32F1平台构建理论模型并实现四类消息分级调度,通过硬件仲裁与软件策略结合保障关键任务低延迟,实测验证了系统在高负载下的可靠性。

weixin_35592186的博客 867

MCP2515寄存器级驱动开发与CAN总线工程实践

CAN控制器是嵌入式系统实现可靠工业通信的核心组件,其本质是通过寄存器映射方式管理位定时、报文过滤、发送优先级与错误状态等底层协议行为。理解CAN 2.0A/B协议栈的硬件映射机制,掌握SPI时序约束、波特率配置公式及工作模式切换状态机,是保障总线确定性通信的基础。该技术广泛应用于汽车电子诊断(如UDS协议)、工业PLC节点和机器人实时控制等场景,尤其在资源受限MCU上,寄存器级驱动相比HAL抽象可显著降低延迟并提升时序可控性。本文围绕MCP2515芯片展开,深入解析其32个关键寄存器功能、三缓冲区发送引擎

weixin_42600128的博客 167

基于CAN总线与MCP25050的剪叉式升降平台分布式控制系统设计

在工业自动化与设备控制领域,分布式控制系统通过将计算和I/O功能分散到网络节点,有效解决了传统集中式控制布线复杂、扩展性差的核心痛点。其核心原理在于利用现场总线技术,构建一个可靠、实时的通信网络,实现各节点间的数据交换与协同工作。这种架构的技术价值在于显著提升了系统的可靠性、灵活性和可维护性。在移动机械、自动化生产线等应用场景中,CAN总线因其高可靠性和实时性成为主流选择之一。本文聚焦于如何利用Microchip的MCP25050 CAN I/O扩展器芯片,为剪叉式升降平台这类典型设备构建一套精简、高效的分

weixin_29194817的博客 284

嵌入式总线设备解析——CAN总线实战(一)

本文全面介绍了CAN总线技术及其嵌入式实现。主要内容包括:1. CAN总线概述:高可靠性的串行通信协议,支持多主从结构和优先级仲裁;2. 物理层与数据链路层:双绞线传输、逻辑电平定义及标准帧结构;3. 硬件设计要点:控制器、收发器选型及120Ω终端电阻配置;4. 软件驱动开发:以STM32 HAL库为例的初始化、收发代码实现及FreeRTOS任务设计;5. 调试测试方法:常见工具使用及错误状态处理;6. 实战案例:汽车仪表盘CAN通信系统架构。文章还探讨了CANFD协议的改进特性,并提供了进阶学习方向,为嵌

Dr.kangder的博客 277

TCP/IP与CAN总线选型指南:从原理到实战的嵌入式通信决策

在嵌入式系统与工业自动化领域,通信总线的选型是系统架构的核心决策之一。从基本原理来看,通信协议定义了设备间数据交换的规则与格式,其设计直接决定了网络的实时性、可靠性与扩展性。TCP/IP协议栈作为互联网的基石,基于分组交换与路由寻址原理,提供了开放、高带宽的通信能力,但其传统的CSMA/CD机制在确定性延迟方面存在挑战。相比之下,CAN总线采用基于优先级的非破坏性位仲裁机制,从物理层即保证了高优先级报文的传输确定性,从而实现了硬实时性能。这两种机制的技术价值迥异:TCP/IP胜在通用互联与大数据吞吐,是信息

weixin_30940783的博客 406

STM32 CAN总线:从硬件过滤到软件队列的实战解析

本文深入解析STM32 CAN总线从硬件过滤到软件队列的实战应用。详细介绍了CAN控制器、邮箱系统和硬件过滤器的工作原理,并提供了基于FreeRTOS的软件队列实现方案,帮助开发者优化通信性能,解决高速场景下的数据溢出问题。

data3的博客 562

ESP32 TWAI CAN总线采集板实战:硬件设计、驱动开发与现场调试

CAN总线作为工业设备通信的经典协议,凭借差分信号和非破坏性仲裁机制,在运动控制、物联网网关等领域广泛应用。ESP32芯片内置TWAI控制器,可兼容CAN 2.0协议,只需外接一颗CAN收发器即可完成物理层转换,相比传统MCU加独立控制器方案,大幅简化了硬件链路的复杂度。TWAI外设的位时序配置、错误计数器和Bus Off恢复机制,以及滤波规则,是保障长期稳定收发的核心。项目实战中,收发器选型、终端电阻布置、共模干扰抑制和上电时序处理,往往是现场通信异常的根源。文章完整梳理了基于ESP32的CAN数据采集板

weixin_34174422的博客 452

CAN总线帧结构与控制器配置深度解析

CAN总线是一种面向实时控制的多主串行通信协议,其核心在于基于差分信号的显性/隐性电平机制和非破坏性位仲裁原理。该机制通过硬件级线与逻辑实现无冲突优先级调度,支撑高可靠车载网络。技术价值体现在抗干扰强、故障自愈、无需主节点协调等工程优势,广泛应用于汽车电子、工业控制及电机驱动等对实时性与功能安全要求严苛的场景。本文深入剖析标准帧与扩展帧的ID编码逻辑、五类CAN帧(数据帧、远程帧、错误帧等)的功能协同、位时序参数配置方法,以及STM32 HAL库下的过滤器设置与中断驱动实践。

weixin_28746213的博客 48

STM32 CAN总线多节点通信系统:从协议原理到工程组网全实战

CAN总线通信系统设计与实现摘要 本文基于STM32F103C8T6构建三节点CAN总线网络,详细介绍了从硬件搭建到软件实现的完整开发流程。系统采用TJA1050收发器芯片,实现500kbps稳定通信,具有以下技术特点: 硬件设计:采用标准CAN总线拓扑,终端电阻匹配优化,确保信号完整性 软件架构:基于HAL库和FreeRTOS,实现中断+轮询混合通信机制 核心功能: 掩码模式过滤器实现ID分组接收 双向通信与心跳监测机制 完善的错误检测与处理 性能指标: 单帧传输延迟<120μs 48小时连续运行零丢帧

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 551

基于STM32的CAN总线智能节点设计与实现

控制器局域网(Controller Area Network, CAN)由Bosch于1986年提出,最初用于汽车内部多个电子控制单元(ECUs)之间的高效、可靠通信。随着工业自动化、新能源汽车和物联网的发展,CAN因其高实时性、强抗干扰能力和低成本,广泛应用于车载网络、工业控制和智能设备中。当待传数据超过8字节时(如固件升级、大块配置参数),需借助传输协议实现分段重组。ISO 15765-2(简称ISO-TP)是广泛应用的标准,专为CAN设计。其基本原理如下:帧类型标识符。

weixin_42476987的博客 604

CAN总线工程实践:从协议原理到嵌入式开发与抗干扰设计

CAN总线作为一种广泛应用于汽车电子和工业控制的分布式实时通信协议,其核心在于非破坏性仲裁和CSMA/CA机制,确保了高优先级消息的可靠传输。这项技术的工程价值在于构建高可靠、确定性的实时控制系统,尤其在汽车动力总成、车身网络等关键场景中不可或缺。在实际应用中,工程师常面临数据丢包、错误帧和总线负载率过高等挑战,这往往源于对位时序、ID规划和物理层设计的理解不足。本文聚焦于CAN总线的工程化落地,通过嵌入式开发实例,详细拆解了从硬件连接到STM32配置、从基础收发代码到结合FreeRTOS与DBC解析的完整

weixin_34302561的博客 376

Debian下Rust环境极速安装指南:国内镜像+避坑配置(附清华/中科大源对比)

本文详细介绍了在Debian系统上快速安装和配置Rust开发环境的完整指南。针对国内网络环境,重点对比评测了清华大学、中国科学技术大学等主流镜像源,提供了详细的安装配置步骤、Cargo优化技巧以及常见问题排查方案,帮助开发者显著提升依赖下载和编译效率。

s8t9u0v1w的博客 1161

QT编程系列1--QT学习前需知

本周学习了一些QT编程方面的知识,学写了几个程序,这里把记录下来。一方面对前面学习的知识做一个总结,便于以后复习、再学习和应用;另一方面也和大家做个交流,有不足的地方请各位看官多指点。   首先是做一些学习之前的交代:一,学习QT需要哪些基础;二,学习QT有哪些用途,QT较其他的开发工具有哪些特点;三,学习QT的思路。

霜月孤鸟&RTEMS&TinyOS 1114

CAN总线高精度时间同步方案设计与实现

时间同步是分布式系统的核心技术,尤其在工业控制和汽车电子领域,微秒级同步精度直接影响系统性能。CAN总线作为广泛应用的现场总线,其固有的异步传输特性给时间同步带来挑战。通过设计专用同步报文和主从式架构,结合线性回归算法和时钟漂移补偿,可以在CAN网络上实现亚毫秒级同步。该方案在汽车ECU协同控制等场景中具有重要价值,通过优化中断处理、总线负载控制和温度补偿等措施,可进一步提升同步精度。典型实现基于STM32硬件平台,支持CAN FD扩展应用,并能与EtherCAT等工业网络桥接。

weixin_33824363的博客 382

自动识别象棋棋子的OpenCV应用

在计算机视觉领域,OpenCV是一个广泛应用的开源计算机视觉库,它提供了丰富的图像处理和分析工具。本文将介绍如何使用OpenCV实现自动识别象棋棋子的功能,并提供相应的源代码。通过以上代码,我们可以实现对棋盘图像中棋子的自动识别。需要注意的是,以上代码只是一个简单的示例,实际应用中可能需要根据具体情况进行参数调整和算法优化,以获得更好的识别效果。函数利用预处理后的图像,寻找图像中的轮廓,并根据轮廓的面积筛选出可能的棋子轮廓,最后在原图像中提取棋子区域。在主程序中,我们读取输入图像,并调用。

WzisTypescript的博客 903

嵌入式工程师成长路径:从STM32裸机到FreeRTOS+Modbus+CAN实战

嵌入式系统开发是以微控制器为核心、软硬协同的工程实践,其本质是通过寄存器配置、中断响应、实时调度与工业协议交互来实现物理世界控制。掌握STM32底层驱动能力是基础,理解FreeRTOS任务调度与上下文切换机制是进阶关键,而Modbus和CAN总线则代表工业现场最广泛部署的通信范式——前者解决设备数据上行标准化,后者保障多节点高可靠实时交互。这些技术共同构成智能硬件、边缘网关、工控终端等岗位的核心能力图谱。本文聚焦真实调试场景,以问题驱动方式串联硬件电路、协议栈实现与系统级调优,覆盖从Keil环境搭建、GPI

weixin_34034261的博客 490

浏览器解析HTML的过程及编程实现

需要注意的是,上述示例代码只是简化的演示,并未涵盖浏览器解析HTML的所有细节和复杂性。实际上,浏览器的HTML解析引擎还会处理一系列的特殊情况、错误容错和性能优化等方面的内容,以确保能够正确解析各种类型的HTML代码。HTML(超文本标记语言)是构建网页的基础语言,浏览器负责将HTML代码解析并渲染成可视化的网页。本文将详细介绍浏览器解析HTML的过程,并提供相应的编程示例代码。希望以上内容能帮助您理解浏览器解析HTML的过程,并通过提供的示例代码更好地了解如何在编程中实现这一过程。

ByteJolt的博客 321

通过Langchain实现大模型完成测试用例生成的代码(可集成到各种测试平台)

代码中使用的是讯飞spark3.0版本,其中版本在的控制已经封装到了langchain对应的讯飞的iflytek的类中,可以在调用的时候显示控制,默认是spark2.0版本。

Criss@陈磊 2360

2025嵌入式面试高频考点:I2C、SPI、CAN总线原理与实战解析

在嵌入式开发中,板级通信协议是连接微控制器与外围设备的基础。I2C、SPI和CAN作为最常用的总线技术,分别通过开漏输出、时钟极性与相位配置、非破坏性仲裁等机制,实现了可靠的数据传输。掌握这些协议不仅能提升硬件调试效率,更是嵌入式岗位面试的核心考察点。从传感器读取到固件加载,再到汽车网络通信,这些技术广泛应用于消费电子、工业控制和汽车电子等领域。本文系统梳理了2025年面试中围绕这三类总线的高频考点,结合实战调试经验,帮助开发者深入理解时序细节与常见问题解决方案。

weixin_33769125的博客 448

C#与欧姆龙PLC 通信——fins udp协议

该调试助手专门为了帮助大家学习以及测试Fins-Udp通信,下面进行详细介绍。

qq_34059233的博客 2871

GD32H759+RT-Thread CAN总线通讯开发实战与调试经验

实时操作系统与现场总线是工业控制领域的两大基石。在嵌入式系统设计中,CAN总线凭借差分信号与多主仲裁机制,成为车载电子、工控设备等场景最常用的通讯方式之一。基于Arm Cortex-M7内核的GD32H759主频高达600MHz,配合RT-Thread实时操作系统的设备驱动框架,能让开发者以标准API快速实现可靠的CAN报文收发。理解波特率、采样点、负载率与错误帧机制,是排查通讯故障的关键;合理配置终端电阻与过滤器,则是保证总线稳定性的前提。本文从CAN物理层原理出发,结合GD32H759外设资源,讲解RT

weixin_34006965的博客 355

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: 计算机图形学20个核心渲染技术
下一篇: 姿态解算(四元数、欧拉角、互补滤波、卡尔曼)
CYY1921
博客等级 码龄1年 3粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CYY1921

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值