操作系统嵌入式物联网嵌入式OSRTOS【免费下载链接】rt-threadRT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/项目地址https://gitcode.com/gh_mirrors/rt/rt-thread点击查看免费下载导读本文以 RT-Thread 仓库中 bsp/nuvoton/libraries/m2354/README.md 为核心系统梳理 NuMicro M2354 系列在 RT-Thread 下的外设驱动支持现状包括 30 余类外设对应的rt_device_class_type设备分类、统一设备名称uart0、spi0、bpwm0等、Kconfig 使能开关与依赖关系并结合 rtt_port 目录下的驱动实现源码与 Kconfig 配置项说明每个驱动如何在 numaker-m2354 BSP 中开启与使用。读完本文你将能对照外设需求快速定位驱动源码、理解设备命名规律、正确配置 Kconfig 选项并借助 RT-Thread 标准设备框架调用这些外设。1. M2354 与 RT-Thread 驱动移植概览NuMicro M2354 是 Nuvoton 面向安全物联网应用推出的 Cortex-M23 内核 MCU 系列。在 RT-Thread 仓库中其驱动层位于 bsp/nuvoton/libraries/m2354由README.md本文关联文档与rtt_portRT-Thread 移植驱动源码两部分组成对应的评估板 BSP 为 bsp/nuvoton/numaker-m2354。从 bsp/nuvoton/README.md 的 BSP 总表可知M2354 是仓库中 Nuvoton 系列里唯一基于 Cortex-M23 架构的 BSP。驱动层通过 SConscript 递归扫描子目录中的SConscript在 rtt_port/SConscript 中按GetDepend()条件将各.c驱动文件编入名为Drivers的构建组并自动加入头文件搜索路径。值得注意的是该脚本对 USB 类驱动做了互斥约束若已选择BOARD_USING_USBD板级 USB Device却同时勾选BSP_USING_OTG或BSP_USING_USBH构建会直接报错退出避免同一 USB 控制器被多个驱动重复注册。rtt_port目录共提供了 40 余个驱动源文件覆盖通信、定时、存储、安全、系统控制等各个功能域与 README 的支持列表一一对应驱动源码对应外设驱动源码对应外设drv_uart.cUARTdrv_uuart.cUSCI-UARTdrv_scuart.c智能卡 UARTdrv_ui2c.cUSCI-I2Cdrv_i2c.cI2Cdrv_uspi.cUSCI-SPIdrv_spi.cSPIdrv_qspi.cQSPIdrv_spii2s.cSPI-I2Sdrv_i2s.cI2Sdrv_can.cCANdrv_usbd.cUSBDdrv_usbhost.cUSBHdrv_otg.cOTGdrv_timer.cTIMERdrv_tpwm.cTIMER-PWMdrv_timer_capture.cTIMER-Capturedrv_bpwm.cBPWMdrv_bpwm_capture.cBPWM-Capturedrv_epwm.cEPWMdrv_epwm_capture.cEPWM-Capturedrv_ecap.cECAPdrv_qei.cQEIdrv_eadc.cEADCdrv_pdma.cPDMAdrv_sdh.cSDHdrv_sdio.cSDIOdrv_fmc.cFMCdrv_ebi.cEBIdrv_slcd.cSLCDdrv_crypto.cCRYPTOdrv_trng.cTRNGdrv_crc.cCRCdrv_gpio.cGPIOdrv_clk.cCLK/PMdrv_rtc.cRTCdrv_wdt.cWDTdrv_common.c板级公共初始化2. 支持外设总览官方驱动支持清单关联文档以一张总表给出了 M2354 在 RT-Thread 中支持的全部外设、对应的 RT-Thread 设备类型与统一设备名称。下表完整继承该清单外设rt_device_class_type设备名称BPWMMiscellaneous (PWM)bpwm[0-1]BPWM捕获功能Miscellaneous (Input capture)bpwm[0-1]i[0-5]CANCANcan0CLKPMpmCRCMiscellaneous (HW Crypto)hwcrytoCRYPTOMiscellaneous (HW Crypto)hwcrytoEADCMiscellaneous (ADC)eadc0EBIN/AN/AECAPMiscellaneous (Input capture)ecap[0-1]i[0-2]EPWMMiscellaneous (PWM)epwm[0-1]EPWM捕获功能Miscellaneous (Input capture)epwm[0-1]i[0-5]FMCFALN/AGPIOMiscellaneous (Pin)gpioGPIO软件 I2CI2CBUSsofti2c0[0-1]I2CI2CBUSi2c[0-2]I2SSound / Pipesound0PDMAN/AN/AQEIMiscellaneous (Pulse encoder)qei[0-1]QSPISPIBUSqspi0RTCRTCrtcSCUART 功能Charscuart[0-2]SDHBlocksdh0SPISPIBUSspi[0-3]SPII2S 功能Sound / Pipespii2s[0-3]TIMERTimertimer[0-5]TIMER捕获功能Miscellaneous (Input capture)timer[0-5]i0TIMERPWM 功能Miscellaneous (PWM)tpwm[0-5]TRNGMiscellaneous (HW Crypto)hwcrytoUARTCharuart[0-5]USBDUSBDeviceusbdUSBHUSBHostusbhUSCII2C 功能I2CBUSui2c[0-1]USCISPI 功能SPIBUSuspi[0-1]USCIUART 功能Charuuart[0-1]WDTMiscellaneous (Watchdog)wdt这张表是使用 M2354 驱动时的“字典”设备名决定了rt_device_find(...)的查找参数设备类型则决定了应该调用哪一套 RT-Thread 设备接口PWM 接口、串口接口、SPI 总线接口等。3. 设备分类与命名规则解读3.1 rt_device_class_type 的含义表格中的rt_device_class_type列对应 include/rtdef.h 中enum rt_device_class_type枚举值。该枚举从RT_Device_Class_Char到RT_Device_Class_Unknown定义了 RT-Thread 全部设备类别M2354 驱动涉及的类别包括RT_Device_Class_Char字符设备UART、SCUART、UUART 等串口类RT_Device_Class_SPIBUS/RT_Device_Class_I2CBUS总线设备SPI、QSPI、I2C、USCI 复用功能RT_Device_Class_CAN/RT_Device_Class_RTC/RT_Device_Class_TimerCAN、RTC、定时器RT_Device_Class_Sound/RT_Device_Class_PipeI2S 音频设备同时注册 Sound 与 Pipe 两类RT_Device_Class_BlockSDH 块设备挂接 DFS/SDIO 子系统RT_Device_Class_USBDevice/RT_Device_Class_USBHostUSB 设备/主机RT_Device_Class_PM低功耗电源管理伪设备RT_Device_Class_Miscellaneous杂项设备M2354 中用于承载 PWM、输入捕获、硬件加解密、看门狗、引脚等由 RT-Thread 组件层扩展出的子类。需要特别说明文档中Miscellaneous (PWM)、Miscellaneous (Input capture)、Miscellaneous (HW Crypto)、Miscellaneous (Watchdog)等括号标注并不代表枚举里真有这些细分值而是指驱动在Miscellaneous大类之下分别向上层注册为 RT-Thread 的 PWM 设备rt_device_pwm、输入捕获设备、硬件加密设备HWCRYPTO或看门狗设备WDT上层框架再按各自子类接口对外提供服务。PWM、输入捕获、WDT、ADC 等在 RT-Thread 中分别有独立的设备接口头文件与框架实现。3.2 设备命名规律从表中可以总结出清晰的命名规律方便按外设索引直接构造设备名基础外设名 实例序号uart0~uart5、spi0~spi3、i2c0~i2c2、timer0~timer5、bpwm0~bpwm1、epwm0~epwm1、qei0~qei1、ui2c0~ui2c1、uspi0~uspi1、uuart0~uuart1、scuart0~scuart2复用功能设备以功能前缀区分同一外设硬件在不同功能模式下注册不同的设备名。例如 TIMER 同时可注册为timer[n]定时器、tpwm[n]PWM、timer[n]i0输入捕获BPWM/EPWM 的捕获通道注册为bpwm[n]i[0-5]、epwm[n]i[0-5]SPI 的 I2S 复用模式注册为spii2s[n]USCI 的三种功能分别注册为uuart、ui2c、uspi安全类外设共用设备名CRYPTO、CRC、TRNG 均以hwcryto文档原文如此注意该拼写注册为硬件加密设备通过 HWCRYPTO 框架的算法类型区分使用场景无设备名外设EBI、PDMA、FMC 不注册为独立 RT-Thread 设备其中 FMC 通过 FAL 抽象层对外提供片内 Flash 分区读写PDMA 作为其他驱动UART/SPI/CRC 等的数据搬运引擎存在EBI 则以内核总线访问方式使用。以 drv_bpwm.c 为例驱动通过struct nu_bpwm数组静态描述设备name字段即上文表中的bpwm0/bpwm1bpwm_base指向硬件寄存器基址BPWM0/BPWM1并实现了struct rt_pwm_ops的control回调文件头部定义的DEFAULT_DUTY 50、DEFAULT_FREQ 1000表明默认占空比 50%、频率 1 kHz。从源码结构可以推断设备注册遵循“宏开关裁剪 静态数组 统一 ops”的典型 RT-Thread 驱动模式宏未定义时对应实例不会进入数组。4. 按功能域分组的驱动详解4.1 通信接口类UART / USCI / I2C / SPI / QSPI / CAN / USB串口家族是 M2354 驱动中最庞大的部分共分三套硬件实现UARTuart[0-5]通用异步收发器注册为RT_Device_Class_Char。Kconfig 中BSP_USING_UART开启后可逐个使能UART0~UART5每个通道还提供 TX/RX DMA 独立开关BSP_USING_UARTx_TX_DMA/RX_DMA依赖RT_SERIAL_USING_DMAUSCIuuart[0-1]/ui2c[0-1]/uspi[0-1]通用串行控制接口同一外设通过引脚配置可复用作 UART、I2C、SPI 三种功能。Kconfig 中以BSP_USING_USCI0/1choice互斥选择的方式决定具体注册为哪个设备并为 UUART 提供 TX/RX DMA 选项、为 USPI 提供 PDMA 传输选项SCUARTscuart[0-2]智能卡主接口的 UART 模式注册为字符设备。总线类I2Ci2c[0-2]与 SPIspi[0-3]分别注册为RT_Device_Class_I2CBUS、RT_Device_Class_SPIBUSQSPI 注册为qspi0同时依赖RT_USING_QSPI与 SPI 框架也支持 PDMA。SPI 接口在使能RT_USING_AUDIO后可切换为 I2S 模式注册spii2s[0-3]。此外 GPIO 还可模拟出软 I2C 总线softi2c0/1对应 Kconfig 中BSP_USING_SOFT_I2C默认关闭且为每个软 I2C 总线提供默认 SCL/SDA 引脚号配置如 swi2c0 默认 SCL0x18、SDA0x17swi2c1 默认 SCL0x0B、SDA0x0A。CANcan0注册为RT_Device_Class_CANKconfig 选项为BSP_USING_CANBSP_USING_CAN0。USB 三件套usbdRT_Device_Class_USBDevice、usbhRT_Device_Class_USBHost且强制依赖RT_USBH_MSTORAGE以支持 U 盘存储、OTG同时选中 USBH 与 USBD。如第 1 节所述板级 USB 设备选择与 OTG/USB 主机存在互斥约束详见 rtt_port/SConscript 的编译期检查。USB 主机模式下可通过NU_USBHOST_HUB_POLLING_INTERVAL100~2000 ms默认 100 ms配置根集线器轮询间隔。4.2 定时与信号测量类TIMER / TPWM / Capture / BPWM / EPWM / ECAP / QEIM2354 提供多达 6 个 TIMERtimer[0-5]每个 TIMER 在 Kconfig 中都是一个三选一的choiceTIMER注册RT_Device_Class_Timer并依赖RT_USING_CLOCK_TIME、TIMER PWM注册tpwm[n]依赖RT_USING_PWM、TIMER CAPTURE注册timer[n]i0依赖RT_USING_INPUT_CAPTURE。注意BSP_USING_TMR5额外受!BSP_USING_CLK约束——因为 CLK/PM 驱动会占用定时器资源。PWM 家族分三档TPWM由 TIMER 复用而来设备名tpwm[0-5]精度由定时器时钟决定BPWM基础 PWMbpwm[0-1]Kconfig 通过BSP_BPWM0_SEL/BSP_BPWM1_SEL选择 PWM 或捕获模式捕获模式下用BSP_USING_BPWMx_CAPTURE_CHMSK16 进制通道掩码范围 0~0x3F默认 0指定启用的 6 个捕获通道EPWM增强 PWMepwm[0-1]支持更丰富的波形控制同样可切换捕获模式epwm[n]i[0-5]通道掩码配置方式与 BPWM 一致。输入捕获除 TIMER/BPWM/EPWM 的捕获模式外还有独立 ECAP 增强输入捕获定时器ecap[0-1]i[0-2]每实例 3 通道BSP_USING_ECAPx_CHMSK范围 0~0x7。QEI正交编码器接口注册为qei[0-1]依赖RT_USING_PULSE_ENCODER用于电机转速/位置测量。4.3 数据转换与搬运类EADC / PDMAEADC增强型模数转换器注册eadc0为RT_Device_Class_Miscellaneous下的 ADC 设备依赖RT_USING_ADC。Kconfig 提供BSP_USING_EADCBSP_USING_EADC0两级开关板级初始化时见 drv_common.c会将 VREF 连接到内部 3.0 V 参考电压SYS-VREFCTLPDMA外设 DMA 控制器不注册独立设备作为 UART/SPI/QSPI/USPI/CRC 等驱动的高速数据通道。Kconfig 中BSP_USING_PDMA默认开启可配置NU_PDMA_MEMFUN_ACTOR_MAXmemfun 最大 actor 数1~4默认 4与NU_PDMA_SGTBL_POOL_SIZE分散-聚集描述符池大小1~32默认 16。4.4 存储与扩展总线类SDH / FMC / EBISDH安全数字主机控制器注册sdh0为块设备依赖RT_USING_DFS与RT_USING_SDIO可直接挂接文件系统Kconfig 提供BSP_USING_SDH0/SDH1选项README 列表以sdh0为例FMCFlash 内存控制器不注册为 RT-Thread 设备而是通过 FALFlash Abstraction Layer抽象层对外提供片内 Flash 分区操作Kconfig 中BSP_USING_FMC会select RT_USING_FAL默认关闭EBI外部总线接口用于扩展并行外设NOR Flash、SRAM、LCD 等不注册设备直接以总线地址方式访问Kconfig 默认关闭SLCD段式 LCD 驱动Kconfig 中存在BSP_USING_SLCD默认关闭对应 NuMaker-M2354 板载段码屏。4.5 安全与密码类CRYPTO / TRNG / CRCM2354 的安全特性是其主要卖点三类安全外设统一通过 HWCRYPTO 框架RT_Device_Class_Miscellaneous (HW Crypto)注册为hwcryto设备CRYPTO密码学加速器。Kconfig 中BSP_USING_CRYPTO会一次性开启 HWCRYPTO 的 AESECB/CBC/CFB/CTR/OFB 五种模式、DES/3DESECB/CBC、SHA1/SHA2224/256/384/512全套算法宏可配置NU_PRNG_USE_SEED指定 PRNG 种子值0~0xFFFFFFFFTRNG真随机数发生器BSP_USING_TRNG自动依赖 CRYPTO 与RT_HWCRYPTO_USING_RNG为系统提供高质量随机数CRC循环冗余校验发生器支持 07、8005、1021、04C11DB7 四种经典多项式对应 CRC-8/16/32 常用多项式并默认使用 PDMA 搬运数据NU_CRC_USE_PDMA默认 y。4.6 系统控制类GPIO / CLK / RTC / WDT / 公共初始化GPIO注册gpio引脚设备RT_Device_Class_Miscellaneous (Pin)依赖RT_USING_PIN为所有外设提供引脚复用与上下拉配置基础板级初始化中 drv_common.c 会先执行nutool_modclkcfg_init()配置系统时钟、SYS_UnlockReg()解锁受保护寄存器、nutool_pincfg_init()统一设置引脚功能CLK注册pm电源管理设备RT_Device_Class_PM依赖RT_USING_PM并强制依赖定时器Kconfig 提示“开启该选项将占用 timer3 资源”NU_CLK_INVOKE_WKTMR可启用 SPD1/DPD 模式的唤醒定时器约 6.6 秒RTC注册rtcRT_Device_Class_RTC可选支持NU_RTC_SUPPORT_IO_RW设备读写入口与NU_RTC_SUPPORT_MSH_CMDShell 命令WDT注册wdt看门狗设备依赖RT_USING_WDT默认开启公共初始化rt_hw_board_init()弱函数在 drv_common.c 中实现完成时钟/引脚/SysTick/堆HEAP_BEGIN~HEAP_END/UART 控制台rt_console_set_device(RT_CONSOLE_DEVICE_NAME)初始化并提供rt_hw_cpu_reset()复位与rebootShell 命令。5. Kconfig 配置与设备注册的对应关系M2354 驱动层的所有开关集中在 rtt_port/Kconfig。顶层SOC_SERIES_M2354自动选中ARCH_ARM_CORTEX_M23、SOC_FAMILY_NUMICRO、RT_USING_COMPONENTS_INIT、RT_USING_USER_MAIN以及PKG_USING_NUVOTON_SERIES_DRIVER是整套驱动的基础依赖。此外还有BSP_USE_STDDRIVER_SOURCE用于决定是否从源码构建 Nuvoton 标准外设驱动库StdDriver。关键的依赖链关系可在menuconfig中直接验证功能域总开关子开关示例自动 select 的 RT-Thread 组件PDMABSP_USING_PDMA默认 y池大小、actor 数—FMCBSP_USING_FMC—RT_USING_FALGPIOBSP_USING_GPIO默认 y—RT_USING_PINCLK/PMBSP_USING_CLK默认 yNU_CLK_INVOKE_WKTMRRT_USING_PM、BSP_USING_TMRRTCBSP_USING_RTCIO_RW / MSH_CMDRT_USING_RTCEADCBSP_USING_EADCBSP_USING_EADC0RT_USING_ADCTIMERBSP_USING_TMRTMR0~5 三选一RT_USING_CLOCK_TIME/RT_USING_PWM/RT_USING_INPUT_CAPTUREUARTBSP_USING_UARTUART0~5 DMART_USING_SERIALI2CBSP_USING_I2CI2C0~2RT_USING_I2CUSCIBSP_USING_USCIUSCI0/1 三选一RT_USING_SERIAL/RT_USING_I2C/RT_USING_SPISDHBSP_USING_SDHSDH0/1RT_USING_DFS、RT_USING_SDIOCANBSP_USING_CANCAN0RT_USING_CANBPWMBSP_USING_BPWMBPWM0/1 PWM 或 CaptureRT_USING_PWM/RT_USING_INPUT_CAPTUREEPWMBSP_USING_EPWMEPWM0/1 PWM 或 Capture同上SPIBSP_USING_SPISPI0~3NONE/PWM/I2S 三选一RT_USING_SPI/RT_USING_AUDIOI2SBSP_USING_I2S—含 DMA FIFO 大小 2048~4096RT_USING_AUDIOQSPIBSP_USING_QSPIQSPI0 PDMART_USING_SPI、RT_USING_QSPISCUARTBSP_USING_SCUARTSCUART0~2—ECAPBSP_USING_ECAPECAP0/1 通道掩码RT_USING_INPUT_CAPTUREQEIBSP_USING_QEIQEI0/1RT_USING_PULSE_ENCODERCRYPTOBSP_USING_CRYPTOPRNG 种子RT_USING_HWCRYPTO AES/DES/3DES/SHA 全套TRNGBSP_USING_TRNG—CRYPTO RT_HWCRYPTO_USING_RNGCRCBSP_USING_CRCPDMA 选项CRYPTO RT_HWCRYPTO_USING_CRC及 4 种多项式软 I2CBSP_USING_SOFT_I2C默认 nswi2c0/1 引脚号RT_USING_SOFT_I2CWDTBSP_USING_WDT默认 y—RT_USING_WDTEBIBSP_USING_EBI默认 n——SLCDBSP_USING_SLCD默认 n——USBDBSP_USING_USBD—RT_USING_USB_DEVICEUSBHBSP_USING_USBH集线器轮询间隔RT_USING_USB_HOST、RT_USBH_MSTORAGEOTGBSP_USING_OTG—USBH USBD配置要点与注意事项互斥约束板级BOARD_USING_USBD与BSP_USING_OTG/BSP_USING_USBH不能同时选中BSP_USING_TMR5与BSP_USING_CLK互斥CLK 占用 timer3资源占用提示开启 CLK/PM 会持有 timer3开启 USBD 时若同时配置 USBH/OTG 会在编译期直接报错见 rtt_port/SConscriptDMA 依赖UART/USPI 的 DMA 开关均depends on RT_SERIAL_USING_DMA需先在 RT-Thread 串口框架层开启 DMA 支持通道掩码BPWM/EPWM 捕获通道掩码为 6 bit0~0x3FECAP 为 3 bit0~0x7均以 16 进制输入默认 0即不启用任何通道。6. 设备注册的实现方式源码级印证从 rtt_port 的源码结构可以推断各驱动遵循统一的实现模板宏裁剪每个.c文件开头以#if defined(BSP_USING_XXX)包裹未使能时整个驱动不参与编译静态设备表以struct nu_xxx arr[]静态数组描述各实例元素含设备名、硬件基址、附加参数如 drv_bpwm.c 的pwm_period_time并依据BSP_USING_XXXn宏条件编译实例项ops 回调实现对应框架的 ops 结构如rt_pwm_ops.control、串口struct rt_uart_ops、SPI 总线 ops 等再通过rt_device_pwm_register、rt_hw_serial_register、rt_spi_bus_register_device等标准注册 API 挂入设备链表自动初始化借助 RT-Thread 的INIT_BOARD_EXPORT/INIT_DEVICE_EXPORT自动初始化宏完成注册最终由 drv_common.c 的rt_components_board_init()统一调度。这也解释了 README 表格的设备名为何与 Kconfig 选项一一对应每个BSP_USING_XXXn选项最终决定nu_xxx_arr[]中是否包含名为xxxn的设备实例。7. 在 NuMaker-M2354 BSP 中的使用流程定位 BSP评估板工程位于 bsp/nuvoton/numaker-m2354支持 MDK5project.uvprojx、IARproject.eww与 GCC/SConsSConstruct三套构建方式板级特性见 bsp/nuvoton/numaker-m2354/README.mdM2354KJFAE96 MHz1 MB 双 Bank Flash256 kB SRAM板载 ESP8266 与段码屏。配置驱动在menuconfig中进入驱动层配置按第 5 节表格勾选所需外设注意互斥约束生成的配置写入rtconfig.hSOC_SERIES_M2354等基础选项会自动生效。查找设备应用代码中通过rt_device_find(设备名)按第 2 节表格中的名字获取设备句柄再按设备类型调用对应框架 API——例如 PWM 用rt_pwm_set/rt_pwm_enable串口用rt_device_read/writeSPI 用rt_spi_transferHWCRYPTO 用加密设备接口。验证运行编译烧录后在 FinSH/MSH 控制台可用list_device查看所有已注册设备及名称与 README 表格对照即可确认驱动是否按预期注册。8. 参考资料与延伸阅读本文关联文档bsp/nuvoton/libraries/m2354/README.md官方支持外设清单驱动源码与配置bsp/nuvoton/libraries/m2354/rtt_port、bsp/nuvoton/libraries/m2354/rtt_port/Kconfig构建脚本bsp/nuvoton/libraries/m2354/SConscript、bsp/nuvoton/libraries/m2354/rtt_port/SConscript评估板 BSPbsp/nuvoton/numaker-m2354 及其 README.md设备类型枚举定义include/rtdef.henum rt_device_class_typeNuvoton 系列 BSP 总览bsp/nuvoton/README.md板级公共初始化实现drv_common.cM2354 的详细技术参考手册TRM由 Nuvoton 官方发布可在评估板 README 的 Resources 一节中获取下载指引后查阅寄存器级细节。赞分享操作系统嵌入式物联网嵌入式OSRTOS【免费下载链接】rt-threadRT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/项目地址https://gitcode.com/gh_mirrors/rt/rt-thread点击查看免费下载相关推荐RT-Thread 下 NuMicro M460 系列驱动支持全览外设清单、设备命名与配置指南RT Thread 下 NuMicro M460 系列驱动支持全览外设清单、设备命名与配置指南 本篇技术指南以 RT Thread 开源仓库中 M460 系列操作系统嵌入式物联网嵌入式OSRTOSRT-Thread Nuvoton N9H30 BSP 外设驱动移植详解设备模型、设备名与 Kconfig 配置全解析RT Thread Nuvoton N9H30 BSP 外设驱动移植详解设备模型、设备名与 Kconfig 配置全解析 在 RT Thread 的 BSP 体操作系统嵌入式物联网嵌入式OSRTOSRT-Thread NuMicro M031 系列外设驱动库设备接入、命名规范与配置指南RT Thread NuMicro M031 系列外设驱动库设备接入、命名规范与配置指南 本篇技术指南围绕 RT Thread 仓库中 bsp/nuvoton操作系统嵌入式物联网嵌入式OSRTOS上一篇9大网盘直链提取神器告别限速困扰的终极解决方案下一篇9大网盘直链获取工具浏览器本地解析下载链接的完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
Codex 实战 Skills:用 HTML 模板自动填充客户名称并发送带附件报表的邮件技能 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 14:53:33
数独生成算法全解析:终盘构造、挖洞策略与唯一解验证实战 1. 先分清“终盘”和“题目”:生成算法的设计边界先说个大多数第一次写数独生成器的人都会踩的坑:上来就想着“随机往格子里填数字,填满一个99还满足规则就算大功告成”。你要是真这么做了,会发现程序跑上半天一个结果都出不来&am… · 2026/9/25 14:53:33
ModLens 源码剖析:10 路视觉来源的 Failover 链如何做到“永不沉默“的故障转移 ModLens 源码剖析:10 路视觉来源的 Failover 链如何做到"永不沉默"的故障转移 【免费下载链接】modlens The first vision plugin for DeepSeek Harness, and the vision bridge for every text-only coding agent. Paste an image, get structured JSON … · 2026/9/25 14:53:27
FTP双通道原理与Active/Passive模式实战解析 1. FTP不是“传文件的软件”,而是一套精密协作的通信协议很多人第一次接触FTP,是在Windows资源管理器里输入ftp://192.168.1.100,或者用FileZilla点几下就传好了照片、文档、设计稿。于是下意识觉得:“FTP不就是个上传下载工具嘛&… · 2026/9/25 15:29:10
Atlas 300V 24G推理加速卡部署YOLO全流程详解 1. Atlas 300V 24G到底是一张什么卡,凭什么能跑YOLO先说结论:Atlas 300V 24G确实是一块AI运算加速卡,而且是一块专门为推理场景设计的加速卡。很多人第一次看到“300V”这个名字会误以为是显卡,或者以为是某种视频采集卡ÿ… · 2026/9/25 15:28:58
CiLocks钓鱼页面设计解析:仿Instagram特效页背后的社会工程心理学 CiLocks钓鱼页面设计解析:仿Instagram特效页背后的社会工程心理学 【免费下载链接】CiLocks Crack Interface lockscreen, Metasploit and More Android/IOS Hacking 项目地址: https://gitcode.com/GitHub_Trending/ci/CiLocks
CiLocks 是一款面向 Android/… · 2026/9/25 15:28:58
Atlas 300V 24G推理卡部署YOLO:从ONNX到OM全流程解析 后台最近被问得最多的两个问题,一个是“atlas 部署 yolo 怎么搞”,另一个是“atlas 300v 24g 是运算加速卡吗”。我一听就知道,问的人多半刚接触昇腾这套东西,手里要么有张卡不知道干啥,要么正准备上视频分析项目。先说… · 2026/9/25 15:28:52
从零搭建AI Agent工具链:CLI、MCP与OpenRouter实战指南 1. 从"treg"这个模糊词说起:它到底指什么第一次看到"treg"这三个字母,我脑子里蹦出来的第一反应是生物学里的调节性T细胞(Regulatory T cell,缩写Treg)。但结合后面跟着的一串热词——OpenRouter、… · 2026/9/25 15:28:39
当ChatBI进入企业,如何守住数据底线?零数据保留策略的边界与落地 导语
不少企业接入ChatBI(基于大模型的智能对话式BI,可让业务用自然语言直接问数分析)后,一边享受着业务自助分析效率的提升,一边又陷入了数据安全的焦虑:原始业务数据会不会流出去?大模型会不会… · 2026/9/25 15:28:26
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37