首页/新闻资讯/正文详情

xmake使用总结

发布时间:2026/11/2 18:36:28 来源:云帆数科 栏目:资讯中心
xmake使用总结
GitHub - Meidozuki/VBAO: A library aiming for building an MVVM (or MVFM) projecthttps://github.com/Btk-Project/xmake-repohttps://github.com/tboox/tboxGitHub - tboox/gbox: A multi-platform graphic libraryGitHub - tboox/vm86: A x86 Script Instruction Virtual MachineGitHub - tboox/ltui: A cross-platform terminal ui library based on Luaxmake#https://xmake.io/#/guide/faq?idbreakpoint-debuggingxrepo update-repoxrepo env -b emmylua_debugger -- xmake build #调试构建xrepo env -b emmylua_debugger -- xmake install -o /tmp #调试安装Create Projectxmake create -l c -P ./helloxmake create -l c -t console testxmake create -l c -t static testxmake create -l c -t shared testxmake create -l c -t console_qt testxmake create -l c -t static_qt testxmake create -l c -t shared_qt testxmake create -l c -t quickapp_qt testxmake create -t quickapp_qt -l c appAndroidDemoxmake create -t xcode.macapp -l objc testxmake create -t xcode.iosapp -l objc testxmake create -t xcode.framework -l objc testxmake create -t xcode.bundle -l objc testxmake create -l go -t console testBuild Project:xmake #generate xmake.lua automatically and buildxmake f -y #generate xmake.lua automaticallyRun Program:xmake run hello || xmake r helloDebug Program:xmake config -m debug xmake xmake f --debuggergdb xmake run -d helloPaltform:xmake f -p wasm --toolchainwasi [--qt~/Qt]xmake f -p [iphoneos|macosx|windows|android] -a [armv7|armv7s|arm64|i386|x86_64]xmake f -p mingw --sdk/usr/local/i386-mingw32-4.3.0/ [-a i386|x86_64|arm|arm64]xmake f -p myplat --sdk/usr/local/arm-xxx-gcc/SDK:xmake f --qt~/Qt/Qt5.9.1xmake f -p cross android --ndk~/Downloads/android-ndk-r19c/ --android_sdk~/Library/Android/sdk/ --bin/usr/opt/bin --crossarmv7-linux- -cxmake f --wdkG:\Program Files\Windows Kits\10 -cxmake f --wdk_winver[win10_rs3|win8|win7|win7_sp1]xmake f --cuda/usr/local/cuda-9.1/Flags:--cflags,--cxxflags, --ldflags, --shflags and --arflagsxmake f -p cross --sdk/user/toolsdk--ccarmv7-linux-clang--cxxarmv7-linux-clang--ldarmv7-linux-clang--sharmv7-linux-clang--ararmv7-linux-ar--includedirs/usr/toolsdk/xxx/include--linkdirs/usr/toolsdk/xxx/lib--linkspthread--cflags-DTEST -I/xxx/xxx--ldflags-lpthread--cxflags Set c/c compiler optiong global configuration-c clean all cached configuration and re-configure project.(multiple directories use : under linux / macos, and ; under win.)set_config(cflags, -DTEST)set_config(sdk, /home/xxx/tooksdk)set_config(cc, gcc)set_config(ld, g)xmake f -m debug --menu --xxxy --export/tmp/config.txt --import/tmp/config.txtInstall:xmake installxmake [p|package] -o outputdir -f remote #generate packagexmake uninstallCustom toolchain:xmake f --toolchain[myclang,emcc]--bin Set the bin directory of toolchains--cross Set the prefix of compilation tools--as Set asm assembler--asflags Set asm assembler optiontoolchain(myclang)set_kind(standalone)set_toolset(cc, clang)set_toolset(cxx, clang, clang)set_toolset(ld, clang, clang)set_toolset(sh, clang, clang)set_toolset(ar, ar)set_toolset(ex, ar)set_toolset(strip, strip)set_toolset(mm, clang)set_toolset(mxx, clang, clang)set_toolset(as, clang)Policies:xmake f --ccachen || xmake f --policiesbuild.ccache:n,build.sanitizer.address #n-禁用缓存,没有表示开启set_policy(build.warning, true)set_warnings(all, extra)set_policy(build.optimization.lto, true) #link-time optimisation (LTO)set_policy(check.auto_ignore_flags, false) #自动忽略set_policy(check.auto_map_flags, false) #自定映射到不同平台set_policy(build.across_targets_in_parallel, false) #多目标并行编译set_policy(build.ccache, false)set_policy(build.sanitizer.address, true)set_policy(build.sanitizer.undefined, true)set_policy(build.sanitizer.thread, true)set_policy(build.sanitizer.memory, true)set_policy(build.sanitizer.leak, true)add_requires(zlib, {configs {asan true}}) #Address Sanitizer (ASan)xmake f --policiesrun.autobuildset_policy(package.librarydeps.strict_compatibility, true)set_policy(package.download.http_headers, TEST1: foo, TEST2: bar)add_urls(https://github.com/madler/zlib/archive/$(version).tar.gz, {http_headers {TEST1: foo, TEST2: bar}})preprocessor.linemarkerspreprocessor.gcc.directives_onlypackage.requires_lockpackage.precompiledpackage.fetch_onlypackage.install_onlypackage.strict_compatibilitypackage.install_alwaysHelp:xmake create --helpxmake f --helpxmake show -l toolchainsxmake -v -Dxmake show -l envsxmake l os.programdirxmake [action|plugin] [-h|--help]xmake [-q|--quiet]xmake [-w|--warning]xmake l find_package cmake::ZLIB构建脚本调试https://xmake.io/#/guide/faq?idbreakpoint-debugging无法连接9966端口改host: 127.0.0.1。或vscode底部重启EmmyLua。xrepo update-repoxrepo env -b emmylua_debugger -- xmake build #调试构建xrepo env -b emmylua_debugger -- xmake install -o /tmp #调试安装文档生成xmake doxygenExecutable Program:-- set project nameset_project(tbox)-- set project versionset_version(1.5.1, {build %Y%m%d%H%M, soname true})\-- the current xmake version must be larger than 2.1.0set_xmakever(2.1.0)add_moduledirs($(projectdir)/modules)add_packagedirs(packages)add_rules(mode.debug, mode.release)add_requires(qt5widgets, {optional true, asan true, debug true, smalltrue, verify false, external false})add_requires(go::github.com/sirupsen/logrus, {alias logrus})add_requires(go::golang.org/x/sys/internal/unsafeheader, {alias unsafeheader})add_requires(cmake::ZLIB, {alias zlib, system true})add_requires(cmake::Boost, {system true, configs {components {regex, system}}))add_requires(cmake::OpenCV, {system true, configs {envs {CMAKE_PREFIX_PATH xxx}}})add_requires(cmake::xxx, {configs {link_libraries {abc::lib1, abc::lib2}}})add_requires(libpng ~1.16, zlib 1.1.2 || 1.2.11 1.3.0)add_configfiles(../include/co/config.h.in, {filename ../include/co/config.h})add_repositories(my-repo my-repo)option(linux-headers, {showmenu true, description Set linux-headers path.})if is_plat(windows, macosx) thenadd_requires(go::golang.org/x/sys/windows, {alias syshost})add_links(pthread, m, dl)elsefor _, name in ipairs({pthread, m, dl}) doadd_links(name)endadd_requires(go::golang.org/x/sys/unix, {alias syshost})endif is_plat(myplat) thenadd_defines(TEST)endtarget(test)set_plat(cross)set_arch(c-sky)set_targetdir($(projectdir)/lib)set_rundir($(projectdir))set_basename(co)add_rules(xcode.application || xcode.framework || xcode.bundle)add_files(src/*.m, src/**.storyboard, src/*.xcassets)add_files(src/Info.plist)add_values(xcode.bundle_identifier, org.tboox.test)add_values(xcode.codesign_identity, Apple Development: xxxgmail.com (T3NA4MRVPU))add_values(xcode.mobile_provision, iOS Team Provisioning Profile: org.tboox.test)after_load(function (target)for _, sourcebatch in pairs(target:sourcebatches()) doif sourcebatch.sourcekind as then -- only asm filesfor idx, objectfile in ipairs(sourcebatch.objectfiles) dosourcebatch.objectfiles[idx] objectfile:gsub(%.S%.o, .o)endendendend)target:set(filename, TARGET_NAME...elf)target:add(ldflags, flto .. -Wl,--gc-sections -Wl,-zmax-page-size1024 -Wl,--whole-archive ./lib/libwmarch.a ./lib/libgt.a ./lib/libwlan.a ./lib/libdsp.a ./lib/libbtcontroller.a -Wl,--no-whole-archive -mcpuck804ef -nostartfiles -mhard-float -lm -Wl,-T./ld/air101_103.ld -Wl,-ckmap./build/out/..TARGET_NAME...map ,{force true})target(usbview)add_rules(win.sdk.application)add_files(*.c, *.rc)add_files(xmlhelper.cpp, {rule win.sdk.dotnet})set_values(wdk.sign.certfile, path.join(os.projectdir(), xxxx.cer))set_values(wdk.env.winver, win10)target(qt_static_library)add_rules(qt.static || qt.shared || qt.console || qt.quickapp || qt.quickapp_static || qt.qmlplugin || qt.widgetapp)add_packages(qt5widgets)add_headerfiles(src/*.h)add_files(src/*.cpp)add_files(src/mainwindow.ui)set_values(qt.qmlplugin.import_name, My.Plugin)add_frameworks(QtNetwork, QtGui, QtWidgets)target(library)set_kind(static || shared)add_files(src/library/*.c)add_deps(add, sub)set_policy(build.merge_archive, true) #合并静态库target(test)set_kind(binary)set_languages(c11)add_packages(protobuf-cpp)add_packages(logrus, syshost, unsafeheader)add_rules(lex, yacc)add_files(src/*.c)add_files(*.mpp, { install true })add_deps(library)-- generate SASS code for SM architecture of current hostadd_cugencodes(native)-- generate PTX code for the virtual architecture to guarantee compatibilityadd_cugencodes(compute_30)add_values(iverilogs.flags, -DTEST)add_defines(DEBUG)add_syslinks(pthread)set_license(GPL-2.0)set_policy(build.c.modules, true)set_toolchains(iverilog, clang, yasm)set_toolset(cxx, clang)set_toolset(ld, clang)add_ldflags(-static, {force true})target_end()target(VBAO)set_installdir($(buildir)/install)add_installfiles(Lib_VBao/COPYING.LESSER,{prefixdir VBAO})add_installfiles(Lib_VBao/VBAO/*,{prefixdir VBAO/include})set_languages(cxx17)set_kind(headeronly)package(foo) # on/after/before_build/install/package/runset_sourcedir(path.join(os.scriptdir(), src))on_install(function(package)import(package.tools.xmake).install(package, {})end)after_link(function (target)import(utils.archive.merge_staticlib)merge_staticlib(target, libout.a, {libfoo.a, libbar.a})end)on_fetch(function (package, opt)return {includedirs /usr/src/linux-headers-5.0/include}end)on_load(function (target)if is_plat(linux, macosx) thentarget:add(links, pthread, m, dl)endend)after_build(function (target)Import(core.project.config)Local targetfile target:targetfile()Os.cp(targetfile, path.join(config.buildir(), path.filename(targetfile)))Print(build %s, targetfile)-- Execute signature, if it fails, automatically interrupt, giving a highlight error messageos.run(ldid -S$(projectdir)/entitlements.plist %s, target:targetfile())end)on_load(modules.test.load)on_install(modules.test.install)on_run(function ()-- Internal scopeend)after_package(function ()-- Internal scopeend)if is_host(windows) thenset_urls(http://cdndownload.openluat.com/xmake/toolchains/csky/csky-elfabiv2-tools-mingw-minilibc-$(version).tar.gz)add_versions(20210423, e7d0130df26bcf7b625f7c0818251c04e6be4715ed9b3c8f6303081cea1f058b)add_versions(20230301, 1b958769601e8ba94a866df68215700614f55e0152933d5f5263899bb44d24f5)elseif is_host(linux) thenset_urls(http://cdndownload.openluat.com/xmake/toolchains/csky/csky-elfabiv2-tools-x86_64-minilibc-$(version).tar.gz)add_versions(20210423, 8b9a353c157e4d44001a21974254a21cc0f3c7ea2bf3c894f18a905509a7048f)add_versions(20230301, dac3c285d7dc9fe91805d6275c11fa260511cdd6a774891cbe2d79ec73535e10)endon_install(windows, linux, function (package)os.vcp(*, package:installdir())end)-- external scopetask(hello) do-- external scopeon_run(function ()-- Internal scopeend)end-- option settings, only local settings are supported, not affected by global api settingsoption(test)-- local scope of the current optionset_default(false)set_showmenu(true)set_description(test1 option)option_end()-- local variables, only valid for current xmake.lualocal var1 0-- global variables that affect all subsmake.lua included after includes()var2 1includes(src)target(demo, {kind binary, files src/*.c})option(test1, {default true, showmenu true, description test1 option})Integrate CMake source library:add_rules(mode.debug, mode.release)package(foo)add_deps(cmake)set_sourcedir(path.join(os.scriptdir(), foo))on_install(function (package)local configs {}table.insert(configs, -DCMAKE_BUILD_TYPE .. (package:debug() and Debug or Release))table.insert(configs, -DBUILD_SHARED_LIBS .. (package:config(shared) and ON or OFF))import(package.tools.cmake).install(package, configs)end)on_test(function (package)assert(package:has_cfuncs(add, {includes foo.h}))end)package_end()add_requires(foo)target(demo)set_kind(binary)add_files(src/main.c)add_packages(foo)常用命令-- 显示目标文件路径print(target:targetfile())-- 显示目标的构建类型print(target:get(kind))-- 显示目标的宏定义print(target:get(defines))-- 获取当前工程目录print(project.directory())-- add_deps(UIEvent)-- add_links(tbox)-- add_linkdirs(lib)import(module, {aliastest, rootdir./, inherit true})testModule()target(Global)set_kind(shared)add_files(*.cpp)add_files(Private/*.cpp)add_files(Private/*/*.cpp, Private/**/*.cpp)-- 添加src下的所有cpp文件但是不包括src/test.cpp、src/hello.cpp以及src下所有带xx_前缀的cpp文件-- add_files(src/*.cpp|test.cpp|hello.cpp|xx_*.cpp)add_includedirs(Private, {private true})add_includedirs(Private/Port, {private true})add_includedirs(Public, {interface true}) -- public 当前target依赖的子target都会被设置add_defines(BUILDING_$(target:name():upper))-- os模块-- 运行shell命令如果运行失败直接中断并显示出错信息我们不需要判断返回值os.run(echo hello xmake!)-- 复制文件os.cp(/tmp/src, /tmp/dst)-- 删除文件或者目录os.rm(/tmp/dir)-- 移动文件os.mv(/tmp/old, /tmp/new)-- 判断文件是否存在if os.isfile(/tmp/file) thenend-- 判断目录是否存在if os.isdir(/tmp/dir) thenend-- 匹配遍历文件*为非递归匹配**为递归匹配for _, file in ipairs(os.match(src/*.c)) doprint(file)end-- 匹配遍历目录*为非递归匹配**为递归匹配for _, file in ipairs(os.match(src/*, true)) doprint(file)end-- 常用api-- 抛出异常立即中断raise()-- 抛出异常立即中断并抛出异常错误信息raise(error info)-- 抛出异常立即中断并抛出异常错误代码raise(-1)-- 显示输出并换行支持格式化输出跟lua的print稍有不同print(hello %s, xmake)-- 显示输出不换行printf(hello %s, xmake)-- 格式化字符串s format(hello %s, xmake)-- 异常捕获apitry{-- try块里面抛出异常function ()raise(error)end,catch{-- catch块捕获异常function (errors)print(errors)end}}-- 获取try块的返回值如果没有异常的话返回truelocal ok try{-- try块里面抛出异常function ()-- may be errorreturn trueend}try{-- try块里面抛出异常function ()raise(error)end,catch{-- catch块捕获异常function (errors)print(errors)end},finally{-- finally 块function ()end}}-- path模块-- 获取相对路径path.relative(/tmp/a)-- 获取绝对路径path.absolute(src)-- 获取目录path.directory(/tmp/a)-- 获取文件名 test.cpath.filename(/tmp/test.c)-- 获取base名 testpath.basename(/tmp/test.c)-- 获取扩展名path.extension(/tmp/test.c)-- 拼接路径 /tmp/test.cpath.join(/tmp, test.c)-- io 模块-- 打开一个写文件file io.open(/tmp/a, w)-- 写文件数据file:write(hello)-- 写文件格式化行file:print(hello %s, xmake)-- 写文件格式化不换行file:printf(hello %s, xmake)-- 关闭文件file:close()-- 序列化写一个lua对象到文件io.save(/tmp/a, object)-- 反序列化读取一个文件对象object io.load(/tmp/a)-- 读取文件数据并显示io.cat(/tmp/a)-- 模式替换文件内容, 替换空格字符为 spaceio.gsub(/tmp/a, %s, space)-- tostring, tonumberprint($(tmpdir))add_ldflags($(shell pkg-config --libs sqlite3))-- 如果手动启用了xmake f --demoy 选项if is_option(demo) then-- 编译demo目录下的代码add_subdirs(src/demo)end-- 外置变量local root /tmpset_objectdir(root .. .objs)set_dependir($(buildir)/.deps)local ld_data io.readfile(./ld/air101_103.ld)local ORIGIN, I_SRAM_LENGTH ld_data:match(I-SRAM : ORIGIN 0x(%x) , LENGTH 0x(%x))skia编译add_requires(skia)target(demo)创作不易小小的支持一下吧

相关推荐

C++享元结构文档样式应用
C++享元结构文档样式应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 18:36:28

QML调用JS
QML调用JS

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 18:36:28

基于MAX14431与PIC18F86K90的工业SPI隔离方案设计与实践
基于MAX14431与PIC18F86K90的工业SPI隔离方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 18:35:27

uni-app跨端云开发实战:支付宝云+微信小程序数据不通的根因与解决方案
uni-app跨端云开发实战:支付宝云+微信小程序数据不通的根因与解决方案

1. 问题全景拆解:为什么偏偏是“支付宝云 微信小程序”这个组合出问题1.1 先把场景还原清楚这个标题里其实藏了三个技术主体:uni-app 跨端框架、支付宝云开发(云函数/云数据库)、微信小程序运行环境。三者叠在一起,问… · 2026/11/2 19:36:06

Datalogic Matrix 830/930二维读码器技术解析与应用
Datalogic Matrix 830/930二维读码器技术解析与应用

1. Matrix 830/930系列产品定位解析 Datalogic最新推出的Matrix 830和930系列二维区域读码器,代表了当前物流自动化领域最前沿的包裹分拣技术。这两款产品最突出的技术突破在于单台设备即可覆盖1米宽传送带的扫描需求,这在行业内具有革命性意义。传统解决… · 2026/11/2 19:36:06

政企AI办公工具设计:场景切片与混合知识图谱实践
政企AI办公工具设计:场景切片与混合知识图谱实践

1. 政企AI办公工具的核心设计理念这套AI工具的设计出发点非常明确:不是追求技术参数的堆砌,而是真正解决政企用户在办公场景中的实际痛点。我在为多家政府机构和大型企业部署AI系统的过程中发现,通用型AI工具往往存在三个致命缺陷&#xff1a… · 2026/11/2 19:36:06

对话式信息检索:从关键词匹配到自然语言理解
对话式信息检索:从关键词匹配到自然语言理解

1. 对话式信息检索的范式转变十年前我们还在为"关键词匹配不准"而苦恼,如今却要面对"如何让搜索引擎理解自然语言"的挑战。上周我测试了一个医疗问答场景:当用户输入"孩子发烧38度需要吃退烧药吗",传统搜索引擎… · 2026/11/2 19:36:06

具身智能的数据瓶颈与技术路线解析
具身智能的数据瓶颈与技术路线解析

1. 具身智能的数据瓶颈本质当我们谈论具身智能(Embodied AI)时,实际上是在讨论一种能够通过物理身体与环境进行实时交互的智能系统。这类系统需要处理来自视觉、触觉、力觉等多模态传感器的海量数据流,同时还要在动态环境中做出实… · 2026/11/2 19:36:06

AS SSD Benchmark 固态硬盘测速与掉速排查指南
AS SSD Benchmark 固态硬盘测速与掉速排查指南

简介:这是一款系统工具类的SSD固态硬盘性能测试软件,版本为v1.8.5611.39791,面向装机验机、硬件评测和系统优化人群,也可用于日常排查硬盘性能瓶颈。压缩包共4个文件,以1个exe主程序、2个dll组件和1个htm说明文档为主&… · 2026/11/2 19:35:06

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 4:42:45

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 5:17:18

雷达信号调制技术解析:从LFM到伪线性调频原理与应用
雷达信号调制技术解析:从LFM到伪线性调频原理与应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 1:01:15

基于MAX14431与TM4C123的工业SPI隔离电路设计全攻略
基于MAX14431与TM4C123的工业SPI隔离电路设计全攻略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 1:01:15

PLFM_RADAR:相位线性调频雷达信号处理框架
PLFM_RADAR:相位线性调频雷达信号处理框架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 1:01:15

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 4:42:45

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 5:17:18

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码