TI---UART通信
一、SysConfig 中 UART 配置的核心参数与生成逻辑
1. 基础参数配置(图形化界面)
配置项 | 功能说明 | 生成代码影响 |
---|---|---|
模式选择 | 主机模式(Master)/ 从机模式(仅部分芯片支持,如 UART 作为 I2C 桥接) | 生成 UART_initMaster() 或差异化函数(如 UART0_init() ) |
波特率 | 支持手动输入或自动计算(基于系统时钟),可配置小数波特率(如 115200) | 调用 UART_setBaudRate() 或直接配置波特率寄存器(如 UART_CLOCKDIV ) |
数据格式 | 数据位(5-8位)、停止位(1/1.5/2位)、奇偶校验(无/奇/偶) | 生成 UART_configure() 函数,配置 UART_LCRH 寄存器(LPMOD、WLEN、STOP、PAR) |
FIFO 配置 | 使能 FIFO,设置触发阈值(如接收 FIFO 满 1/4 时触发中断) | 调用 UART_enableFIFO() 和 UART_setFIFOLevel() ,配置 UART_FIFO 寄存器 |
硬件流控制 | CTS/RTS 使能(仅支持具备硬件流控引脚的芯片) | 生成 GPIO 初始化代码(配置 CTS/RTS 引脚为输入/输出),并在 UART 初始化中使能流控 |
2. 高级配置项
- DMA 使能:勾选 DMA 接收/发送,生成 DMA 通道初始化代码(如
DMA_initChannel()
),并关联 UART 的 DMA 请求信号。 - 中断触发类型:可配置接收完成(RX)、发送完成(TX)、错误中断(溢出/帧错误/奇偶校验错误),每个中断独立使能。
- 引脚复用(Pinmux):自动分配 UART_TX/RX 引脚(如
P0.2
/P0.3
),支持修改引脚并生成对应的Pinmux_init()
代码。
二、UART 初始化函数深度解析
1. 生成代码结构
// 文件:syscfgenerated/UART_init.c
#include "UART.h"
#include "Pinmux.h"UART_Handle uartHandle; // 全局句柄,用于中断和用户函数调用void UART_init(void) {// 1. 使能 UART 时钟(如 PCLK 或 UART 专用时钟)Clock_enablePeripheral(Clock_PERIPH_UART0);// 2. 初始化引脚复用(自动生成,对应 SysConfig 引脚配置)Pinmux_initUART0(); // 配置 TX/RX 引脚为 UART 功能,设置驱动强度等// 3. 配置 UART 参数(波特率、数据格式、FIFO 等)UART_Config uartConfig = {.baudRate = 115200,.dataLength = UART_DATA_LENGTH_8_BITS,.parity = UART_PARITY_NONE,.stopBits = UART_STOP_BITS_1,.flowControl = UART_FLOW_CONTROL_DISABLED,.fifoConfig = {.rxTriggerLevel = UART_FIFO_TRIGGER_LEVEL_1_4,.txTriggerLevel = UART_FIFO_TRIGGER_LEVEL_1_4,.rxInterruptMode = UART_FIFO_INTERRUPT_MODE_TRIGGER_LEVEL,.txInterruptMode = UART_FIFO_INTERRUPT_MODE_TRIGGER_LEVEL}};uartHandle = UART_init(DEVICE_UART0, &uartConfig); // 初始化 UART 外设并获取句柄// 4. 用户自定义代码区域(不会被 SysConfig 覆盖)#ifdef USER_CODE_SECTION_UART_INIT// 用户添加初始化后操作(如注册回调函数)#endif
}
2. 关键函数与驱动库调用
UART_init()
:基于 TI Driverlib 或 RTOS 适配层,完成寄存器级初始化(如UART_CTL
控制寄存器、UART_IBRD
/UART_FBRD
波特率分频寄存器)。Pinmux_initUART0()
:生成引脚复用代码,例如:// 示例:MSP430 引脚配置 GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P0, GPIO_PIN2 | GPIO_PIN3);
- 句柄(Handle)机制:生成的 UART 句柄用于中断处理和后续 API 调用(如
UART_read()
/UART_write()
),支持多 UART 实例(如 UART0、UART1)。
三、UART 中断服务函数(ISR)详解
1. 中断使能与配置流程
- SysConfig 界面勾选中断:在 UART 配置页分别勾选 接收中断(RX)、发送中断(TX)、错误中断(Error),并设置优先级。
- 生成 ISR 框架:默认生成
UART0_ISR()
,函数结构如下:// 文件:syscfgenerated_isr.c void UART0_ISR(void) {uint32_t intStatus = UART_getEnabledInterruptStatus(uartHandle); // 获取使能的中断状态// 处理接收中断(如 RX FIFO 达到触发阈值或接收完成)if (intStatus & UART_INT_RX) {#ifdef USER_CODE_SECTION_UART_RX_ISR// 用户处理接收数据(建议通过 DMA 或缓冲区处理,避免阻塞)while (UART_hasData(uartHandle)) {uint8_t data = UART_readByte(uartHandle);// 存入接收缓冲区,触发回调或通知任务(RTOS 场景)}#endifUART_clearInterruptStatus(uartHandle, UART_INT_RX); // 清除接收中断标志}// 处理发送中断(如 TX FIFO 空或发送完成)if (intStatus & UART_INT_TX) {#ifdef USER_CODE_SECTION_UART_TX_ISR// 用户处理发送完成逻辑(如切换发送状态机)UART_clearInterruptStatus(uartHandle, UART_INT_TX);#endif}// 处理错误中断(溢出/帧错误/奇偶校验错误)if (intStatus & UART_INT_ERROR) {uint32_t errorStatus = UART_getErrorStatus(uartHandle);// 记录错误类型并复位外设(可选)UART_clearErrorStatus(uartHandle, errorStatus);} }
2. 中断处理最佳实践
- 避免在 ISR 中阻塞:接收数据时使用环形缓冲区(Ring Buffer),发送数据时通过状态机管理发送队列,复杂逻辑通过信号量/队列通知任务(RTOS 场景)。
- 错误处理:必须清除错误标志(如
UART_clearErrorStatus()
),否则会导致中断重复触发;严重错误(如连续溢出)建议复位 UART 外设。 - 临界区保护:操作接收/发送缓冲区时,使用
DisableInt()
/EnableInt()
(裸机)或 RTOS 临界区接口(如xSemaphoreTakeFromISR()
)。
四、UART 与 DMA 协同(高级功能)
1. SysConfig 中 DMA 配置
- 使能 DMA 接收/发送:在 UART 配置页勾选 DMA 选项,自动生成 DMA 通道初始化代码(如
DMA_initChannel(DMA_CH_UART_RX)
)。 - 数据缓冲区配置:生成 DMA 缓冲区全局变量(如
uint8_t uartRxBuffer[256];
),并配置 DMA 传输长度和方向。
2. 生成的 DMA 相关代码
// UART 初始化中启用 DMA
UART_enableDMA(uartHandle, UART_DMA_RX, DMA_CH_UART_RX); // 关联 DMA 通道到接收方向
DMA_setTransferParams(DMA_CH_UART_RX, uartRxBuffer, &UART_getDataRegister(uartHandle),DMA_TRANSFER_SIZE_8_BITS, 256, DMA_TRANSFER_PERIPHERAL_TO_MEMORY);
DMA_startTransfer(DMA_CH_UART_RX); // 启动 DMA 传输// DMA 中断服务函数(若配置了 DMA 完成中断)
void DMA_CH_UART_RX_ISR(void) {if (DMA_getInterruptStatus(DMA_CH_UART_RX)) {DMA_clearInterruptStatus(DMA_CH_UART_RX);// 处理 DMA 传输完成事件(如触发接收完成回调)}
}
3. DMA 优势
- 释放 CPU 资源,适合高速数据传输(如串口转 USB 场景);
- 避免频繁中断(DMA 仅在缓冲区满/空时触发一次中断)。
五、低功耗场景下的 UART 处理
1. 唤醒低功耗模式
- SysConfig 配置:在电源管理(Power)配置页勾选“UART 中断唤醒”,生成代码自动配置中断唤醒逻辑(如 MSP430 的 LPM3 唤醒)。
- 代码实现:
// 进入低功耗前使能 UART 中断唤醒 Power_setMode(Power_LPM3); // 进入 LPM3,等待 UART 中断唤醒 // UART ISR 中自动退出低功耗(硬件自动处理)
2. 低功耗优化
- 关闭非必要功能:在进入低功耗前禁用 UART 时钟(
Clock_disablePeripheral(Clock_PERIPH_UART0)
),唤醒后重新初始化。 - FIFO 深度设置:增大 FIFO 触发阈值(如 1/2 满),减少中断次数以降低功耗。
六、用户自定义与代码维护
1. 回调函数机制
- SysConfig 支持添加回调:在 UART 配置页“Callback”选项中定义接收完成回调(如
uartRxCallback
),生成函数框架:void uartRxCallback(uint8_t data) {// 用户填充逻辑(如数据解析、命令响应) }
- 回调调用位置:在接收中断处理中调用回调(需用户手动添加,生成代码仅提供框架)。
2. 避免代码覆盖
- 用户代码区域:使用
#ifdef USER_CODE_SECTION_*
标记自定义代码,如在 UART 初始化后设置自定义波特率(动态修改):// 在 UART_init() 中用户区域修改波特率(运行时动态配置) #ifdef USER_CODE_SECTION_UART_INITUART_setBaudRate(uartHandle, 230400); // 覆盖 SysConfig 配置的波特率 #endif
- 手动添加 API:若需扩展功能(如 UART 设备枚举),在用户文件中调用驱动库函数,避免修改生成文件。
七、调试与常见问题排查
1. 通信失败排查步骤
- 物理层检查:
- 确认 TX/RX 引脚正确连接(交叉连接,即设备 A 的 TX 接设备 B 的 RX);
- 示波器测量波形,确认波特率、数据格式(起始位/停止位)一致。
- 软件配置检查:
- 对比生成代码中的波特率计算是否正确(系统时钟频率是否匹配);
- 确保中断标志正确清除(先读取状态,再清除标志,顺序不可颠倒)。
- 中断未触发:
- 检查 SysConfig 中是否勾选对应中断(RX/TX/Error);
- 确认中断优先级未被屏蔽(如 CPU 总中断使能
IntMasterEnable()
)。
2. 数据错误处理
- 溢出错误(Overrun Error):接收缓冲区处理不及时,需增大 FIFO 阈值或改用 DMA 模式;
- 帧错误(Frame Error):检查停止位配置、对端设备是否同步(如奇偶校验是否一致);
- 奇偶校验错误:确保双方奇偶校验设置相同,排查硬件噪声(添加硬件滤波)。
八、跨芯片平台差异(TI 典型系列)
芯片系列 | UART 实现差异 | SysConfig 生成代码特点 |
---|---|---|
MSP430 | 支持 USCI_A/B 模块,多模式(UART/SPI),低功耗唤醒优化 | 生成 USCI_A0_init() 等函数,直接操作 USCI 寄存器,集成低功耗模式配置代码 |
Stellaris (LM) | 基于 SSI 模块的 UART 功能,支持硬件流控(CTS/RTS) | 生成 UART_initWithConfig() 函数,使用 Driverlib 统一接口,兼容 RTOS |
CC26xx(BLE) | UART 作为可选外设,需与 BLE 协议栈共存,支持中断唤醒无线模块(从睡眠模式唤醒) | 生成代码包含射频模块电源管理逻辑,确保 UART 中断正确唤醒系统(如 PCM_exitDeepSleep() ) |
TMS320 (DSP) | 支持多 UART 实例(如 UART0/UART1),高速通信需求(配合 DMA) | 生成代码优化寄存器访问顺序,减少流水线冲突,DMA 配置更灵活(支持链式传输) |
九、最佳实践与扩展应用
- 协议实现:基于生成的 UART 代码实现自定义协议(如 Modbus RTU、自定义帧格式),接收端使用状态机解析数据。
- 双工通信:同时使能 RX/TX 中断,发送端通过“发送完成中断”触发下一包数据发送,避免轮询阻塞。
- 与其他外设协同:例如 UART 接收数据后触发 ADC 转换,或通过 SPI 转发数据,利用 SysConfig 生成的初始化代码确保外设间时钟同步。
- 日志调试:在用户代码中封装
uartPrintf()
函数,基于 UART 发送中断实现无阻塞打印,方便调试(需处理字符串缓存)。
总结
TI SysConfig 生成的 UART 代码覆盖了从基础配置到高级功能(DMA、低功耗、多中断处理)的全流程,只需聚焦业务逻辑(如数据解析、协议实现)。通过合理利用回调函数、DMA、缓冲区管理及 RTOS 同步机制,可高效构建稳定的 UART 通信系统。调试时结合芯片手册和驱动库文档,重点关注时钟配置、中断标志清除顺序及硬件连接。
相关文章:
TI---UART通信
一、SysConfig 中 UART 配置的核心参数与生成逻辑 1. 基础参数配置(图形化界面) 配置项功能说明生成代码影响模式选择主机模式(Master)/ 从机模式(仅部分芯片支持,如 UART 作为 I2C 桥接)生成…...
spark总结
文章目录 一 spark简介1.1 什么是spark1.2 spark运行过程1.2.1 组成1.2.2 过程1.2.3 事例(词频统计WordCount程序) 1.3 spark运行模式1.4 pyspark 二 SparkCore2.1 RDD介绍2.2 RDD编写2.3 RDD算子2.4 RDD的持久化2.4.1 为什么需要缓存和检查点机制&#…...
【随笔】地理探测器原理与运用
文章目录 一、作者与下载1.1 软件作者1.2 软件下载 二、原理简述2.1 空间分异性与地理探测器的提出2.2 地理探测器的数学模型2.21 分异及因子探测2.22 交互作用探测2.23 风险区与生态探测 三、使用:excel 一、作者与下载 1.1 软件作者 作者: DOI: 10.…...
补码底层逻辑探讨
在计算机里面以二进制进行存储,二进制并不能区分正负数 为了处理负数,人们想了很多办法 1.原码 首先,很直观的区分方法就是设置一个flag 在二进制前面加一个符号位,0是正、1是负 但是在电路里面处理这样的信号却很复杂&#…...
第二大脑-个人知识库
原文链接:https://i68.ltd/notes/posts/20250407-llm-person-kb/ Quivr-第二大脑一样的个人助手,利用AI技术增强个人生产力 将 GenAI 集成到您的应用程序中的个性化 RAG,专注于您的产品而非 RAG项目仓库:https://github.com/QuivrHQ/quivr Star:37.7k官网:https:/…...
泰勒展开概念解释(图优化SLAM中非线性系统的线性处理)
1. 泰勒展开 泰勒展开是一种用多项式近似复杂函数的数学方法,其核心思想是通过函数在某一点的各阶导数信息,构建一个多项式来逼近原函数,即通过函数在某一点x0的各阶导数值,构造一个多项式 P(x),使得该多项式在 x0 附近与原函数 f(x) 的值及其导数尽可能匹配,数学形式为…...
CANape与MATLAB数据接口技术详解
目录 CANape与MATLAB数据接口技术详解 一、数据互操作背景与意义 1.1 汽车电子开发中的测量需求 1.2 技术标准演进分析 二、CANape数据导出深度解析 2.1 MDF文件结构说明 2.2 转换流程优化建议 三、MATLAB数据处理进阶技术 3.1 数据质量评估脚本 3.2 数据可视化增强方…...
per-task affinity 是什么?
Per-Task Affinity(任务级CPU亲和性)详解 Per-Task Affinity 是 Linux 调度器提供的一种机制,允许将单个任务(进程/线程)绑定到特定的 CPU 核心(或核心集合)上运行,从而优化性能、减…...
基于先进MCU的机器人运动控制系统设计:理论、实践与前沿技术
摘要:随着机器人技术的飞速发展,对运动控制系统的性能要求日益严苛。本文聚焦于基于先进MCU(微控制单元)的机器人运动控制系统设计,深入剖析其理论基础、实践方法与前沿技术。以国科安芯的MCU芯片AS32A601为例…...
Network.framework 的引入,不是为了取代 URLSession
Network.framework 的引入,不是为了取代 URLSession 如果你感觉 Network.framework 的引入, 可能是为了取代 URLSession, 那你就大错特错了!这里需要非常准确地区分一下: 🔵 Network.framework 不是为了取代 URLSession。 &…...
gradle-缓存、依赖、初始化脚本、仓库配置目录详解
1.启用init.gradle文件的方法 在命令置顶文件,例如gradle --init-script yourdir/init.gradle -q taskName,你可以多次输入此命令来制定多个init文件把init.gradle文件放到USER_HOME/.gradle/目录下把以.gradle结尾的文件放到USER_HOME/.gradle/.init.d/目录下把以…...
提示词的神奇魔力——如何通过它改变AI的输出
一、引言:初识AI的惊艳与迷茫 最近这段时间,我像很多人一样,一头扎进了生成式AI的世界,尝试使用各种工具,从文字助手到图像生成器。一开始,我被它们的能力深深震撼,感觉就像突然拥有了一个无所…...
零基础上手Python数据分析 (24):Scikit-learn 机器学习初步 - 让数据预测未来!
写在前面 在前面的学习中,我们已经掌握了使用 Python、Pandas、NumPy、Matplotlib 和 Seaborn 进行数据处理、分析和可视化的全套核心技能。我们学会了如何从数据中提取信息、清洗数据、整合数据、探索数据模式并将其可视化呈现。 现在,我们站在了一个新的起点。数据分析不仅…...
React 与 Vue 虚拟 DOM 实现原理深度对比:从理论到实践
在现代前端开发中,React 和 Vue 作为最流行的两大框架,都采用了虚拟 DOM(Virtual DOM) 技术来优化渲染性能。虚拟 DOM 的核心思想是通过 JavaScript 对象模拟真实 DOM,减少直接操作 DOM 的开销,从而提高页面…...
结合五层网络结构讲一下用户在浏览器输入一个网址并按下回车后到底发生了什么?
文章目录 实际应用第一步:用户在浏览器输入 www.baidu.com 并按下回车1. 浏览器触发域名解析(DNS查询) 第二步:DNS请求的逐层封装与传输1. 应用层(DNS协议)2. 传输层(UDP协议)3. 网络…...
关于Code_流苏:商务合作、产品开发、计算机科普、自媒体运营,一起见证科技与艺术的交融!
Code_流苏 🌿 名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 🌟 欢迎来到Code_流苏的CSDN主页 —— 与我一起&…...
Webpack模块打包工具
1. 认识webpack的基本用法步骤创建项目->下载webpack webpack-cli -> npm init -y -> package.json的scripts中配置webpack默认打包入口:src/index.js默认打包出口: dist/main.js2. 认识webpack.config.js的基本配置loader -> 打包css,less…...
crossOriginLoading使用说明
1. 说明 此配置用于控制 Webpack 动态加载的代码块(chunk)(例如代码分割或懒加载的模块)在跨域(不同域名)加载时的行为。它通过为动态生成的 <script>标签添加 crossorigin 属性,确保符合…...
Linux系统性能调优技巧分享
在数字化时代,Linux 系统以其开源、稳定、高效的特性,成为服务器、云计算、物联网等领域的核心支撑。然而,随着业务规模的扩大和负载的增加,系统性能问题逐渐凸显。掌握 Linux 系统性能调优技巧,不仅能提升系统运行效率,还能降低运维成本。下面从多个方面介绍实用的性能调…...
在Windows11中配置Git+SSH环境,本此实践使用Gitee(码云),方法同样适用于其它绝大部分Git服务
1.下载并安装Git 进入官网下载 Git - Downloading Package 选择下载Standalone Installer安装包,看自己电脑是64-bit还是32-bit(一般都是64-bit) 双击安装包进行安装,Next 这里可以自定义安装路径 这里可以勾选添加桌面快捷方式…...
【软考-架构】14、软件可靠性基础
✨资料&文章更新✨ GitHub地址:https://github.com/tyronczt/system_architect 文章目录 软件可靠性基本概念软件可靠性建模软件可靠性管理软件可靠性设计N版本程序设计恢复块设计(动态冗余)双机容错技术、集群技术负载均衡软件可靠性测试…...
怎样理解ceph?
Ceph 是一个开源的、高度可扩展的 分布式存储系统,设计用于提供高性能、高可靠性的对象存储(Object)、块存储(Block)和文件存储(File)服务。它的核心思想是通过去中心化的架构和智能的数据分布策…...
《AI大模型趣味实战》智能Agent和MCP协议的应用实例:搭建一个能阅读DOC文件并实时显示润色改写过程的Python Flask应用
智能Agent和MCP协议的应用实例:搭建一个能阅读DOC文件并实时显示润色改写过程的Python Flask应用 引言 随着人工智能技术的飞速发展,智能Agent与模型上下文协议(MCP)的应用场景越来越广泛。本报告将详细介绍如何基于Python Flask框架构建一个智能应用&…...
Pygame字体与UI:打造游戏菜单和HUD界面
Pygame字体与UI:打造游戏菜单和HUD界面 在现代游戏中,用户界面(UI)是玩家与游戏互动的重要桥梁。一个精心设计的UI不仅能够提升游戏的视觉效果,还能增强玩家的游戏体验。Pygame作为一个强大的游戏开发库,提供了丰富的工具和方法来创建和管理UI元素。本文将详细介绍如何使…...
游戏引擎学习第246天:将 Worker 上下文移到主线程创建
回顾并为今天的工作做准备 关于GPU驱动bug的问题,目前本地机器上没有复现。如果有问题,昨天的测试就应该已经暴露出来了。当前演示的是游戏的过场动画,运行正常,使用的是硬件渲染。 之前使用软件渲染时没有遇到太多问题ÿ…...
系统设计(2)—Redis—消息队列—数据库—熔限降
Redis 缓存设计 在高并发系统中,缓存是提升性能、减轻后端负载的杀手锏。Redis 作为内存级的高性能缓存数据库,被广泛应用于各类系统设计中。利用 Redis,将热点数据存储在内存中,可以加速读写并大幅降低对后端关系型数据库的直接…...
第十六届蓝桥杯大赛软件赛省赛第二场 C/C++ 大学 A 组
比赛还没有开始,竟然忘记写using namespace std; //debug半天没看明白 (平时cv多了 然后就是忘记那个编译参数,(好惨的开局 编译参数-stdc11 以下都是赛时所写代码,赛时无聊时把思路都打上去了(除了倒数第二题&#…...
HiSpark Studio如何使用Trae(Marscode)插件
引言 我现在非常喜欢使用编程辅助插件,用的最多的是Trae(以前叫Marscode)。以前华为的DevEco Device Tools是基于VSCode的,直接使用官方的插件市场就可以安装了。现在海思提供了自己的HiSpark Studio,比原来的Device …...
Netmiko连接池与长连接优化
背景与原理 在网络自动化中,频繁创建和断开 SSH 连接会带来以下问题: 性能损耗:每次连接需经历 TCP 握手、SSH 协商、用户认证等流程,耗时约 1~3 秒。资源浪费:设备端可能限制并发连接数,频繁连接易触发阈…...
10:00面试,10:08就出来了,面试问的问题太。。。
从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%,这…...
从基础到实战的量化交易全流程学习:1.2 金融市场基础
从基础到实战的量化交易全流程学习:1.2 金融市场基础 在量化交易领域,扎实的金融市场基础是策略开发与风险控制的核心支撑。本文将从交易品种、市场机制、监管合规三方面展开,结合市场特性、真实数据案例及实践要点进行系统化解析,…...
游戏状态管理:用Pygame实现场景切换与暂停功能
游戏状态管理:用Pygame实现场景切换与暂停功能 在开发游戏时,管理游戏的不同状态(如主菜单、游戏进行中、暂停等)是非常重要的。这不仅有助于提升玩家的游戏体验,还能使代码结构更加清晰。本文将通过一个简单的示例,展示如何使用Pygame库来实现游戏中的场景切换和暂停功…...
数据资产价值及其实现路径-简答题回顾
1. 简述数据资产的定义及其特征。 答案:数据资产是指企业或组织所拥有的、具有经济价值的数据资源。它具有以下特征:可复制性(数据可以多次使用)、价值潜力(数据经过处理、分析可以创造经济价值)、流动性&…...
Docker化HBase排错实录:从Master hflush启动失败到Snappy算法未支持解决
前言 在容器化时代,使用 Docker 部署像 HBase 这样复杂的分布式系统也比较方便。社区也提供了许多方便的 HBase Docker 镜像,没有找到官方的 apache的,但有包含许多大数据工具的 harisekhon/hbase 或用于学习目的的 bigdatauniversity/hbase…...
端到端自动驾驶的数据规模化定律
25年4月来自Nvidia、多伦多大学、NYU和斯坦福大学的论文“Data Scaling Laws for End-to-End Autonomous Driving”。 自动驾驶汽车 (AV) 栈传统上依赖于分解方法,使用单独的模块处理感知、预测和规划。然而,这种设计在模块间通信期间会引入信息丢失&am…...
桌面端开发技术栈选型:开启高效开发之旅
在数字化浪潮中,桌面端应用依然占据重要地位,而选择合适的技术栈是打造优质桌面端应用的关键一步。以下是多种主流桌面端开发技术栈的介绍与对比,希望能为大家提供有价值的参考。 基于 Web 技术的跨平台框架 • Electron: • 特…...
C++模拟Java C#的 finally
在 Java 和 C# 中,finally 是一个与异常处理(try-catch)配合使用的关键字,用于确保一段代码无论是否发生异常都会被执行。它通常用于释放资源(如文件句柄、数据库连接、锁等),避免内存泄漏或状态…...
Spring Boot安装指南
🔖 Spring Boot安装指南 🌱 Spring Boot支持两种使用方式: 1️⃣ 可作为常规Java开发工具使用 2️⃣ 可作为命令行工具安装 ⚠️ 安装前提: 📌 系统需安装 Java SDK 17 或更高版本 🔍 建议先运行检查命令…...
zephyr架构下Bluetooth advertising接口
目录 概述 1 函数接口 2 主要函数介绍 2.1 bt_le_adv_start函数 2.1.1 函数功能介绍 2.1.2 典型使用示例 2.1.3 广播间隔 2.1.4 注意事项 2.2 bt_le_adv_stop 函数 2.2.1 函数功能 2.2.2 使用方法介绍 2.2.3 实际应用示例 2.2.4 关键注意事项 2.2.5 常见问题解决 …...
Oracle官宣 MySQL+APEX+AI三认证限时免费
1 MySQL8 OCP 考试代码 1Z0-908 免费时间:2025年4月20日至7月31日 https://education.oracle.com/mysql-promo 2 APEX云开发专家 考试代码 1Z0-771 免费时间:2025年5月15日截止! https://mylearn.oracle.com/ou/learning-path/become…...
深入理解N皇后问题:从DFS到对角线优化
N皇后问题是一个经典的算法问题,要求在NN的棋盘上放置N个皇后,使得它们互不攻击。本文将全面解析该问题的解法,特别聚焦于DFS算法和对角线优化的数学原理。 问题描述 在NN的国际象棋棋盘上放置N个皇后,要求: 任意两个…...
1软考系统架构设计师:第一章系统架构概述 - 超简记忆要点、知识体系全解、考点深度解析、真题训练附答案及解析
超简记忆要点 一、考试大纲 目标:架构设计能力(需求→架构)能力:技术/方法/行业科目:综合(选择)、案例(问答)、论文(论述) 二、架构核心 定义…...
MuJoCo 关节角速度记录与可视化,监控机械臂运动状态
视频讲解: MuJoCo 关节角速度记录与可视化,监控机械臂运动状态 代码仓库:GitHub - LitchiCheng/mujoco-learning 关节空间的轨迹优化,实际上是对于角速度起到加减速规划的控制,故一般来说具有该效果的速度变化会显得丝…...
如何打包python程序为可执行文件
将 Python 程序打包为可执行文件是一个常见需求,尤其是在希望将应用程序分享给不具备 Python 环境的用户时。以下是使用 PyInstaller 工具将 Python 程序打包为可执行文件的步骤。 步骤 1:安装 PyInstaller 如果您还没有安装 PyInstaller,请…...
产销协同是什么?产销协同流程有哪些?
目录 一、产销协同是什么 1.从市场需求的角度来看 2.企业内部运营的角度来看 3.从供应链的角度来看 二、实现产销协同的八大步骤 1. 市场需求预测 2. 销售计划制定 3. 生产能力评估 4. 生产计划制定 5. 库存管理 6. 信息共享与沟通 7. 订单执行与跟踪 8. 绩效评估…...
SQL 查询进阶:WHERE 子句与连接查询详解
SQL(Structured Query Language)是管理关系型数据库的核心语言,熟练掌握其查询功能对于数据处理至关重要。本文将深入探讨 SQL 中的两个关键概念:WHERE 子句和连接查询。我们将详细讲解 WHERE 子句中的模糊查询、IS NULL、IS NOT …...
【计算机视觉】CV实战项目- DFace: 基于深度学习的高性能人脸识别
图:MTCNN的三阶段网络结构(P-Net、R-Net、O-Net) DFace深度解析:基于深度学习的高性能人脸识别 深度解析DFace:基于PyTorch的实时人脸检测与识别系统技术背景与项目概述核心功能与特点实战部署指南环境准备硬件要求软…...
基于Docker、Kubernetes和Jenkins的百节点部署架构图及信息流描述
以下是基于Docker、Kubernetes和Jenkins的百节点部署架构图及信息流描述,使用文本和Mermaid语法表示: 架构图(Mermaid语法) #mermaid-svg-WWCAqL1oWjvRywVJ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-WWCAq…...
百度搜索AI开放计划:让应用连接精准流量的秘诀
引言 在人工智能技术深刻改变各行各业的今天,每天都有许多AI应用诞生。然而无论是开发者还是用户依然会感到自己的应用鲜有人使用或是需求没有被充分满足。这种情况正说明了为什么我们需要SEO流量,而一个能够与AI应用直接相关的SEO平台更是呼之欲出。百度…...
Redis数据结构SDS,IntSet,Dict
1.字符串:SDS SDS的底层是C语言编写的构建的一种简单动态字符串 简称SDS,是redis比较常见的数据结构。 由于以下几种缺点,Redis并没有直接采用C语言的字符串。 1.获取长度需要计算 2.非二进制安全 :中间不能有 \0,…...