小伙伴们大家好啊,最近我不是在使用 relab 进行开发 c 加加的游戏吗?但是在配置环境的时候也踩了很多的坑,然后现在就是记录一下我是怎么一步一步地解决的,然后我将会 从新建一个项目,一直到到最后能够正常运行这个项目来做一个完整的配置。然后首先呢就是点击打开这个 c lan 的 页面, 然后在这个页面里面点击新建项目,然后选择 c 加二零,然后名字就叫 名字就叫 test 一 吧,然后点击创建,然后创建之后它就会有这样一个,然后我们首先配置一下我们的工具链,在这个文件设置里面, 因为我自己配置的工具链是基于路由 studio 的, 所以说你点击这个工具链路由 studio 的, 我配置的是路由 studio 的, 如果你不是路由 studio 的, 你需要去下载一个路由 studio, 然后你在这里点击呃,我把它先取消掉,然后再重新配置一下,点击这里看到没有?第三个选项就是 view studio, 点击蓝色,然后它会打开一个模板,然后让你填嘛, 然后这个工具集你就需要把你,你在下载 view studio 的 时候,你把它安装到哪了,你就点击那个文件夹就可以,你点击这个,然后我是把它安装到这里了, view studio community, 然后我直接点选择文件夹,然后这些它都会自动给你检测出来, 你检测出来了之后,你就点击确定,然后你在这里的话,你就配置一下这个工具链,选用 view studio, 然后点击应用,点击确定, 这样就把工具链跟 cmi 工具配置的差不多了,然后我们就先呃点击这个更多工具窗口这里这三个点点,然后点击之后,然后在这里选择 最下面的这个 v c p k g, 它是一个微软能提供的 c 加加的一个包类管理器。点击,点击之后,我们因为我之前安装过了,所以说我先把它删除,删除掉之后再重新安装一个,然后点击添加,然后在这里 此电脑,然后 我是把它装到这里,因为我就是喜欢,就是分开装,然后所以说我就把它装到这里了。点击选择文件夹,然后点击确定,然后打开控制台之后, 可以看到他正在从远程拉取代码,等待他完成就可以了,这个过程是自动化的,所以说不需要操太多心。然后现在已经克隆引导成功了,我们再点击这个软件包进来,然后他现在已经发亮了,这说明他已经安装好,然后在这里搜索瑞 lib c p p。 然后这个你可以让 v c p k g。 自己决定,你也可以选择叉六十四 windows, 因为我使用的是 windows 的, 然后呃 使用的是 vivo studio 工具链,我们就叉六四 windows, 然后也可以让 v c p k g。 自己决定,所以说直接点安装就可以了。 然后打开控制台,可以看它现在安装的一个情况,它也是从远程把那些东西都下载下来,所以说这一部分也是需要等待一会, 现在已经安装好了,我们可以看到在这里已经有了这两个东西,然后我们需要把它加到这个包 find package, 然后 relip, 然后优先查找 relab 的 配置环配配置项 config, 然后必须要 我,我必须要找到翻呃 relab 这个包,否则的话我就不让它构建下去了。然后之后的话就是在这里它有一个 add is executable, 然后在这下面我们需要把它链接 target 它 get the link library, 然后在这里 test one, 然后选择私有, 这样的话别别的在连接这个 test one 的 时候不会自动连接到 relip。 然后我们先更新一下,然后我们去 github 的 官网上去下载 relab c p c p 的 一个势力代码, 在这里点击复制,复制之后我们直接把它拎清过来,然后这个 logo, 把这一个 relab texture logo 给它去掉, 因为这个 logo 的 图片我们是没有的,所以说如果你要是加上的话,他在运行的过程会报错。呃,我们只是为了构建演示一下构建系统,所以说这一个就没必要。然后我们点击运行, 可以看到已经能够运行成功了,整个流程的配置就是这样。然后这里也是非常不推荐 m g w 的, 呃,非常推荐 m g w 的, 因为使用 m w 它还需要自己去设置一些配置项, 嗯,那个,而且它还容易找不到某些库,所以说你使用 vivo studio, 按照这个教程来进行安装就可以了。 然后好的,这就是分享一下我这一次给大家呃在配置过程中踩的坑吧,然后就是按照这个流程你就能够配置成功。
粉丝5获赞54
![clion嵌入式开发 clion嵌入式开发环境配置(视频作为剪辑练习,讲的不好请谅解#软件开发 #编程 )
1.下载clion
下载openocd,网址:https://gnutoolchains.com/arm-eabi/openocd/
下载stm32cubeCLT工具包,网址:https://www.st.com.cn/zh/development-tools/stm32cubeclt.html#overview
2.配置openocd环境变量
stm32cubeCLT安装程序中会自动添加环境变量,所以不需要配置
3.在clion中添加好stm32cubeMX和stm32cubeCLT的路径
4.clion中配置工具链
5.新建工程测试
我用的是6.15版本的cubemx,如果构建工程不成功,可在camke配置文件中加入,希望ST或者clion官方能解决这个问题。
cmake缺少的两行:
# Include toolchain file
include("cmake/gcc-arm-none-eabi.cmake")
dap-link.cfg文件内容:
# choose st-link/j-link/aap-link etc.
adapter driver cmsis-dap
transport select swd
source [find target/stm32f1x.cfg]
# download speed = 10MHZ
adapter speed 10000](https://p3-pc-sign.douyinpic.com/image-cut-tos-priv/1960bd7afad966f47a91a4e024288f70~tplv-dy-resize-origshort-autoq-75:330.jpeg?lk3s=138a59ce&x-expires=2087701200&x-signature=O8RcWzn2GY2IEeIReagwXoXyZEA%3D&from=327834062&s=PackSourceEnum_AWEME_DETAIL&se=false&sc=cover&biz_tag=pcweb_cover&l=20260301132451D91D2DC943FA94D3DF7B)

首先我们需要通过 crossover 或 y 安装 q 软件,安装过程比较简单,这里就不单独演示 q 驱动的安装,等以后再做视频介绍。启动完成之后,在 arlink studio 中打开 q 调试,回到 q, 打开目标选项, 选择 debug 标签,在下拉框选择 arlink debugger, 此时进入调试器设置页面,就能看到调试器及单片机信息。下面请看乌斑图。系统下距离四百千米,通过移动和联通家庭宽带直连进行远程下载调试及变量监控效果。

首先我们需要通过 crossover 或 y 安装 q 软件,安装过程比较简单,这里就不单独演示 q 驱动的安装,等以后再做视频介绍。启动完成之后,在 arlink studio 中打开 q 调试, 回到 q, 打开目标选项,选择 bug 标签,在下拉框选择 arlink debugger, 此时进入调试器设置页面,就能看到调试器及单片机信息。 下面请看 micros 下距离四百千米,通过移动和联通家庭宽带直连进行远程下载调试及变量监控效果。

大家好,今天我将为大家详细解析互联网设备的固件远程升级方案及其实现细节。在互联网时代,设备的远程维护和升级直观重要,本次分享将包含从需求分析到代码实现的全过程。 本次分享将分为五个部分,首先我们会探讨远程升级的需求背景和面临的核心挑战,接着介绍系统的整体架构设计,然后深入剖析其中的关键设计要点,之后展示具体的软件实现流程和核心代码,最后进行总结并展望未来。 现在让我们进入第一部分,需求背景与核心挑战。我们首先来了解为什么远程升级如此重要,以及实现它需要克服哪些困难。 互联网设备的应用场景千差万别,用户常常有个性化的定制需求,同时设备对接的传感器协议也多种多样。此外,及时修复软件 bug 和进行功能迭代是保证产品竞争力和用户体验的关键,这些因素共同决定了远程升级功能的必要性。 实现远程升级并非易事,我们主要面临六大核心挑战,包括如何实现设备的远程访问,如何高效地分包和传输固件, 如何确保固件的完整性和安全性,以及如何设计可靠的 boot loader 和处理器端软件,最终保证整个升级过程的万无一失。针对这些挑战,我们设计了一套完整的远程升级系统架构。接下来我将为大家介绍这个架构的具体组成和工作方式。 我们的系统采用经典的 cs 架构,主要分为三个部分,设备端、云端和 pc 工具端设备作为客户端,主动连接云端保持长连接。云端作为中转枢纽,负责连接、管理和消息转发。 pc 工具则是用户的操作入口,通过云端向指定设备发起升级。系统的工作流程可以概括为七个步骤,从设备与云端建立长连接开始,到 pc 工具发起指令云端进行转发,设备准备接收。 然后是固件的分包、传输与验证写入,最后设备重启,由 boot loader 完成最终的烧录工作, 整个流程清晰可控。接下来我们详细看一下本方案中直观重要的数据验证环节。为了确保固件在传输和烧录过程中的绝对可靠,我们设计了一套严谨的多层级 crc 三二校验机制。 首先,在传输层面,我们将固件分包,并为每个数据包附加 crc 三二校验值,设备接收后会立即验正,确保每个小包的完整性。 其次,在所有包传输完毕后,设备会进行两次整体校验,一次是对整个固件计算 crc 三十二,另一次是对所有数据包的 crc 三二值再计算一次 crc 三十二。只有这两次校验都通过,才会触发重启,进入 bootloader。 最后,在 boot loader 阶段,还会对暂存区的固件进行最后一次 crc 三二校验和逐字节比对,确认无误后才会写入主程序区。通过这五个层次的校验,我们最大程度的避免了因传输错误或干扰导致设备变砖的风险,保证了整个升级过程的安全和可靠。 了解了整体架构和流程后,我们来深入剖析其中的几个关键设计要点,这些是保证方案可能性和高效性的核心。合理的 flash 空间分配是实现可靠升级的基础。 我们以常见的 stm 三二 f 幺零三为例,将两百五十六 kb 的 flash 化分为四个区域,四 kb 的 boot loader 区、五十二 kb 的 用户数据区以及两个各一百 kb 的 区域,分别用于存放当前程序和接收新固件。 这种双驱备份的方式可以有效防止升级失败导致设备无法启动。固件的生成和分包是传输的前提。在 cue 中,我们需要正确设置链接地址并配置自动生成并文件。 然后在 pc 工具端,我们将大的并文件分割成小的数据包,每个包都包含地址长度、数据和校验值,这样设备端就可以逐个接收并验证。 现在我们来看一下上位机的实现。我们使用 delphi 开发了这套远程升级工具,其核心任务就是将翻译好的固件文件进行分包处理并发送。如代码所示,程序首先快计算出需要分成多少个数据包,然后循环处理每一个包。 对于每个包,我们会构建一个包含偏移地址、数据长度、数据内容以及 crc 三二校验值的完整协议包。 这样设计的好处是,即使在传输过程中某个数据包丢失或出错,设备端也能通过 crc 三二校验识别出来,保证了传输的可能性。这部分代码确保了固件能够被正确地、安全地传送到设备端。最后,我们看设备端的软件实现。 这部分代码运行在互联网设备的 mcu 上。核心是一个状态机,用于有序地处理尚未机发来的各种指令。 例如,当接收到开始升级指令时,设备会从空闲状态切换到初步化状态。在下载状态下,设备会逐个接收并验证数据包,将其写入 flash 暂存区。 整个过程就像一个严谨的流程管理,每一步操作都有严格的状态检查和数据校验,确保了固件接收的准确性。当所有数据接收完毕并验证通过后,设备会重启,让 boot loader 来完成最终的固件烧录工作。这部分代码是保障设备端安全可靠升级的关键。

今天来帮大家解决一下在使用 cryon 翻译器开发单片机的时候遇到的一些常见问题。首先就是工具链中检测不到构建工具和编辑器,遇到这种情况,首先确定你安装了 gcc 翻译环境,然后进入系统环境变量, 查看工具链路径是否添加到了你的 pad 环境变量下。如果环境变量这一步没有问题, 那大概率就是因为你的电脑用户名是中文的,珠宝之前就遇到这个问题,于是新建了一个英文名用户就好了, 建议大家直接新建用户,如果修改用户名的话会非常麻烦,一个步骤错了,可能导致用户数据全部丢失,新建好后就可以识别到了。第二个问题就是在第一次下载程序或者切换其他单片机开发的时候, 会提示 openout in it field。 遇到这个情况,首先确保你的下载器是可以使用的。然后跟随我的鼠标找到编辑配置,查看一下你的面板配置文件是不是白色可用的,如果是像这样红色的, 说明你的配置文件不可用,需要手动重写配置文件。打开翻译环境的文件夹, devon v f, 找到任意一个点 c f 机配置文件,双击用任意一个开发工具打开 看一下你的配置文件格式和我的是不是一样的,如果不一样,则需要手动修改成和我一样的。如果你开发的不是 stm 三二 f 一 系列的单片机,则需要修改这两个路径的。最后把它改成你使用的单片机型号和调试器型号, 修改好后保存文件,然后进入 devon devon 文件夹,复制一份刚刚的配置文件,然后根据你的开发芯片对应修改文件名称, 然后回到 client 重新包含修改好的配置文件即可。

记住这个开源的远程控制工具,并且还是不限流的,目前已经斩获了五点五 k 星标。它是一款跨平台远程控制桌面神器,不仅功能强大,还支持 windows、 mac os、 linux、 android 以及 ios 等多个平台,甚至还能通过网页进行远程控制。并且基于 vivo 三 web rtc notice electron 开发, 直接让你二次开发无压力,没有任何连接次数和画质限制,基本用得上的基础功能都给你开发完成了,开箱即用,更强大,更自由,重点完全免费!

内网穿透还在用第三方隧道限速收费数据过别人服务器,就算用 club flare 官方工具,三条命令才能跑起来,有更简单的办法吗?如果一条命令就能搞定呢? stano 让内网穿透回归简单, stanoquake 三千回车,本地服务瞬间变公网地址,不需要任何配置。 不止于此,翔榜自有域名,一个配置文件搞定, dns 都不用管,多个隧道一个文件全管理。 第三方隧道服务限速限流量数据还要过别人的服务器, stano 直接走和 fgl 全球 cdm 完全免费无限流量,企业级安全 安装, go install 一 行搞定,单二净置零依赖,下载即用。 stano 不是 替代 club flag, 是 让它更好用,开元免费 star 走一个。

啊,同学们啊,本节课我们的内容是蓝牙通信,本节课我们将分为以下四部分进行展开,首先第一部分是原理概述,第二部分就是呃蓝牙模块和蓝牙调试器 app 的 一个使用介绍, 第三部分就是代码实现,然后第四第四部分就是时间的操作。 首先我们先来看一下本节课的一个吸烟现象,本节课我们需要使使用到 stm 三,然后通过 嗯蓝牙模块与这个手机进行无线通信,同时在呃这个 app 上去发送一个单个制服,然后控制 stm 三的一个 led 灯的一个亮面,我们可以看一下右边的这个视频, 我们在这个 app 上去点击这个按钮之后呢,就可以控制左边的这个啊开发版的 led 灯的一个亮面了, 同时上面也会显示一些啊 s 三二反馈过来一个信号, 就表示 led 灯亮了,以及 led 灯已经熄灭了。 首先第一第一部分就是原理概述, 蓝牙通信的话,我们本节课是使用到呃 h c 零五的一个蓝牙模块,然后 h t m 三与这个蓝牙模块 连接,然后与手机进行一个蓝牙通信的话,这样他妈这一过程就相当于两个同学进行一个蓝牙通信的话,这样他妈这一个过程就相当于办理的一个技术委员, 他能够执行指令控制硬件,也就是呃他能够控制 led 灯亮面,但是他不会直接隔空说话,也就是说他没有,他不具备发送无线电信号的一个能力,所以说他需要通过一个蓝牙模块, 那这个蓝牙模块呢?就相当于技术委员的一个对讲机,他能够负责把技术委员的一个语言啊,就相当于那个串口信号转换为无线电信号, 也可以将收到的无线电信号转为技术委员能够读懂的一个语言,也就是将无线电信号转为串口信号,而手机就相当于另一个同学, 那么这个同学是自带一个对讲机的,他能够与技术委员的对讲机进行配对,配对成功之后呢, stm 三就可以与手机进行双向通信了, 那么这一个过程就相当于下面的一个图啊,图形演示就是这一个手机啊,然后上面有一个蓝牙调试 app, 它是通过发送无线电信号,然后传给这个蓝牙模块, 然后呢,这个蓝牙模块就可以将这个无线电信号转为串口信号,然后接着将串口信号传给通过串口传给 stm 三的一个系统吧, 同理, stm 三也可以通过串口发送串口信号给这个蓝牙模块,蓝牙模块再将这个串口信号转为无线电信号发送给这个手机,那么这个手机就可以与这个 stm 三系统进行通信了, 那么串口它就相当于它是技术委员和对讲机之间的一个传话通道嘛, 技术委员只能通过这个通道与和对讲机进行一个交流。那整个的一个蓝牙通信的一个逻辑就是,嗯, stm 三它是不直接处理这个蓝牙通蓝牙信号的,它只负责和这个蓝牙模块通过串口进行说话嘛, 然后这个蓝牙模块就可以自动完成创口信号,蓝牙无线无线信号的一个转换啊,就也就是透传。 那么下面是一个实物的一个展示啊,就是这是一个手机,然后手机上有一个 app, 我 们可以在 app 里面去发送一些制服,然后呢这是一个蓝牙模块, 蓝牙模块通过四根线和这个开发板进行连接, 然后呢?呃,其中两根线是一个串口线,分别是 pa 九和 pa 十,还有两根线,一个是五伏和绝缘地, 而这个是蓝牙模块的一个核心特性,它的本质就是一个串口透传的一个蓝牙模块透传就相当于透明传输, 然后蓝牙模块就相当于一根,呃,无线的一个串口线,它只负责从 stm 三串口发送过来一个字节,然后原封不动的转换为蓝牙信号,它发送出去。 然后如果从手机蓝牙收到那边,从那边收到了一个信号,蓝牙模块就原封不动的将将其转换为串口信号,然后发送给 stm 三。 也就是说这个蓝牙模块,它它是不不对这个串口信号或者是无线电信号那些里面的数据进行一个解析或者是修改的,它只负责对这个信号进行一个转换,比如说从无线电信号转换为串口信号, 或者从串口信号转换为无线电信号,它只做一个格式的一个转换。 那么接着是蓝牙模块和蓝牙调试器 app 的 一个使用介绍,那本节课我们需要是去使用到蓝牙模块,所以说,所以说需要去购买这个蓝牙模块, 那我们可以购买这个 h 七零五的一个模块,一般都是十几块钱,然后它这里,嗯有详情,它这里有对应的那个接线演示以及测试的一些啊,还有那个 at 指指定的一个测试, 然后接着还需要去购买这个 usb 转 ttl 模块, 我们需要去使用这个呃串口模块与蓝牙连接,然后,嗯, 然后这个 usb 转 ttl 的 串口模块就与电脑连接,然后将这个电脑和蓝牙进行一个通信,然后在电脑上去,嗯,使用那个串口调试助手 对这个蓝牙模块的呃名称啊,密码以及波特率等一些数据就可以通过 a t 指令去修改或者是读取, 那我们要通过这个 a t 指令去读取或者是修改蓝牙模块的名称的话,我们需要首先第一步就是先要了解一下如何接线, 首先,嗯,第一个就是我们需要先把这蓝牙模块和 usb 转 ttl 的 一个兼容 vcc 先连接上,兼容的话就是啊两个的兼容分别连接, 然后蓝牙模块的 vcc 就 连接 usb 转 ttl 模块的五伏,因为蓝牙模块这里的一个电压范围就是三点六到六伏,如果是连接三点三伏,那可能就导致电压不足,进而导致这个信号传输不稳定。 接着然后是那个蓝牙模块的接收,接收的那个引脚就是 r 叉 d, 那 r 叉 d 就 要连接 usb 转 ttl 的 这个 t 叉 d, 也就是蓝牙模块的接收方连接 usb 转 ttl 的 一个发送方,这样这个才能够正常通信。那同理这个蓝牙模块的 t 叉 d 就 要连接 usb 转 ttl 的 那个 r 叉 d 嘛, 那也就是如这个表格所示,那接着就是进入 at 命令测试, 那进进入 at 命令测试,它的那个详情也有介绍,就是我们需要先先按照这个按住这个蓝牙模块上面的 a 按键,也就是这一个黑色按键,然后再给那个蓝牙模块进行通电, 如果出现了那个 led 灯慢闪的一个现象,就说明进入了 at 命令测试, 那么这里有两个视频,可以看一下未进入 at 命令测试和进入命令测试的一个现象。首先这是一个 at 命令测试,未进入的一个命令测试, 一进入的话就是直接通过嗯, usb 转 ttl 这种模块直接与电脑连接,那么这个 led 灯现在是快闪的,如果进入 at 命令测试的话,我们需要按住这个按键,然后再连接这个电脑, 我们就可以看到这个 led 灯进入慢闪的一个状态,此时就进入一个 at 命令测试, 然后进入 et 零测试。之后呢我们需要在电脑上去使用串口调试助手,然后就去发送 a t 指令给蓝牙,就可以查询或者是修改模块的一个数据, 那么 a t 指令的话,呃它呢详情也有介绍了,比如说输入 a t 要按一下回车键就可以,然后发送的话蓝牙模块就会返回一个 ok, 比如说还可以修改名称啊,以及密码,还有那个波特率, 那么我们可以看一下这个视频,首先我们要联连接好之后呢,我们就可以直接选择对应的端口,然后还要选择波特率,那么 a t 指定的波特率的话,它也是有规定的,也就是这里它的波特率是三八四零零 啊,然后对应的是八个数字位,一个停止位,无降位,然后我们这里按照对应的那个 要求,然后配置好就可以了,然后打开串口,打开串口之后呢,我们可以看到这里有一个发送信号的一个一个选项,我们把这个选项勾上之后呢,那这个选项就相当于他的一个回车键, 因为他发送信号的意思就是我们在这里去发送数据之后呢,他会重新另起一行, 也就相当于那个我们手动去按下那个回车键,所以说我们勾上这个发送信号之后呢,我们待会儿发送数据,就不需要再每次手动去按下一个回车键了, 所以我们在这个发送发送区域区域里面去,嗯,输入 a t, 然后发送数据就可以返回到一个 ok 了, 接着我们可以去查询一下它的名称,它查询就是 a t 加一个内的一个英文,然后后面再接一个英文的一个问号, 然后发送出去之后,它就返回它那个 m 模块的一个名称了,也就是 h c 零五嘛,然后还可以查它的一个密码, 它的形式也是一样的,只需要把加号后面那一个改成你要查询的那个信息就行了。 然后这是它一个蓝牙一个模式,蓝牙模式它有主从模式,主模式主模式就是蓝牙模块,它可以主动去搜索其他的一个设备, 然后要进行配对连接,而从模式之蓝牙模块就只能被动的被其他设备去连接,这大概就是这两种模式的一个区别, 然后接着我们可以去修改它的名称或者是密码,然后修改的话就是直接在后面啊等于,然后接着接着你要修改的一个名称, 然后我们发送之后呢,我们可以再次查询一下他的名称, 然后他返回你刚才修改了一个名称了, 密码也是一样,不过密码的话这里要添加一个双引号,我们可以看到右边这里他的密码是没有添加双引号的, 所以说,所以说这个是比较注意的,我们要使用这个窗口调试助手的话,就需要嗯,在等号后面加一个双引号,把这个你要改的密码要包裹住, 他才能够去修改成功。如果是按照右边这个形式的话,他他会返回一个错误的 要改那个窗口,那个波特率的话就是它右边有一个颜色的, 然后我们只需要改前面那个数字就行了,你是幺幺五二零零或者是九六零。 有记者我们要改那个主从模式的话也是一样的,但是我们要我们发送了那个修改的呃,模式之后呢?我们发送之后他就无反应了,就是因为我们的发送了那个模式修改之后呢, 它会自动的退出 at 指令,那么这时候我们要重新的进入 at 指令测试,也是需要拔掉那个 usb 转 t t r, 重新接上它才能够正常发送。 那本节课我们要使用的是出场设置的一个值,也就是名称的话是 h 四零五,密码就是幺二三四, 波特率就是九六零零,要模式是选择重模式就可以了,就被动接收嘛, 这就是我们嗯,蓝牙调试助手 app 的 一个使用介绍。那么首先我们需要嗯把蓝牙模块与 stm 三的一个开发法进行一个连接, 这样才能使用那个蓝牙调试器,然后发送数据给 stm 三开发板,同时接收 stm 三发送的一个数据。 那首先第一步我们要先了解一下如何接线,接线的话也是一样,我们需要先把那卷地和 vcc 接上,那蓝牙模块的卷地就是连接开发板的卷地了, 然后也就是连接上面的引角,那引角它背面有对应的一个标识的, 就标识每一个引角到底是什么功,是哪一个引角,那我们就选择 g、 n、 d 就 可以了,然后 v、 c、 c 就 选择五伏, 然后蓝牙模块的 r 叉 d 就 要连接开发版的 t 叉 d, 那 那么开发版的 t 叉 d 就是 pa 九嘛,然后蓝牙模块的 t 叉 d 要连接开发版的那个 r 叉 d, 也就是 pa 十, 那我们也可以也是可以从背面去找到对应的一个引脚的。 然后接着是 app 界面界面的一个介绍,然后左边的这个图片就是 它的一个图标,就是蓝牙调试器嘛,然后这个是 app 的 一个安装包,那这安装包的时候发给你们就可以直接点击安装就可以, 然后 app, 然后点击这个 app 进入它的一个界面的话,首先就是它的一个设备连接, 我们就可以在这里去搜索呃,蓝牙设备,然后搜索出来我们的那个蓝牙的名称之后呢,我们就可以点击右边的他他的一个加号,然后去配对,那么如果是初次连接的话,就需要填写密码, 就是一二三四或者是零零零了。然后连接成功之后呢,他右边这个加号就变成一个叉号,我们就可以点击这个叉号就断开连接,或者是点击这个,嗯,搜索这个按钮就可以去断开这个蓝牙, 然后这个是我们来到这个对话模式, 对号对话模式,这里就相当于一个小的一个串口调试助手,它就会显示那个你发送出来的数据,或者是接收接收的一个数据,然后也可以在这里发送框那里去发送数据, 然后我们就可以通过箭头的一个方向,要判断哪些是你发送出来的数据,哪些是接收到了一个数据,箭头向左就表示你 app 发送出来的一个数据, 如果向右的话就表示 app 接收到了一个数据,那接着是一个专业模式, 专业模式的话,嗯,这个我们本节课是没有用到,如果你们要用到的话,就可以直接点击这个加号,就可以新建一个工程, 然后在这个工程里面可以去嗯,编辑一些,编辑一些控件,然后添加一些控件,之后有可编辑控件,编辑控件之后呢,你就可以去设计专属自己的一个控制界面了, 然后又我们来到右边的一个按钮控制,然后我们本节课就使用这个按钮控制控制去控制那个开发版的一个 led 亮面。首先我们先来到右最上方就是一个接收数据的一个显示区啊, 这里就是接收啊,显示啊, stm 三二发送来发送给 app 的 一个数据,然后这里是发送数据的一个显示区,也就是那个 app 发送给 stm 三二的一些数据, 它就会显示在这里。然后接着是这个 h e s 的 一个显示,也就是十六禁制,如如果我们要打开这个数据之后呢,那么上面这个这一串数据就会以十六禁制的一个形式显示出来, 然后右边这一个编辑模式呢?如果要打开这个编辑模式,我们就可以编辑每一个控件, 有我们可以修改按钮的一个名称,以及他每个按钮按下要发送什么数据,松开然后发送什么数据,我们就可以在这个编辑模式这里去修改, 然后这些蓝色的一个个方块就是那个按钮按下,按下的时候他就会发送一个数据,松开也会发送一个数据, 然后接着是一个按钮编辑模式,我们点击编辑模式,然后点随便点击一个按钮之后就进入到这一个界面,那么这个界面就可以在这里去修改按钮的一个名称, 接着这是按钮按下时发送了一个数据,以及按钮松开时发送了一个数据,然后这个三十一的话,就代表一的一个十六英寸的一个 x 码值, 如果你不想呃去发送这个一的话,那你就可以要发送三十一的话,就可以点击右边的一个开关了,这个就是呃以十六帧的阿克西玛值,然后去发送数据, 然后设置完之后呢,我们就可以点击这个确定,然后接着我们就来到这个这个软件的一个使用的一个视频介绍, 就我们要使用这个 app 控制开发版的 led 灯亮面,这有这有一个演示视频, 那我们点击之后就可以进入这个软件,然后这里这里转圈的话,就说明这个软件正在搜索周围的一个蓝牙, 然后搜索出来之后,我们可以点击右边的一个加号就可以连接了,如果你搜索不出来,你可以再点击这个搜索,就按钮就可以搜索出来, 要连接成功之后呢,他右边就变成叉号那一个叉号了。那首先我们需要进入一个编辑模式,我们需要去编辑那个随便选择两个按钮,然后对这个按钮进行命名,即设置他那个发送了一个数据, 然后这里设置的就是熄灭的时候就发送了一个,一点亮就发送了一个二, 我们可以看到它,呃,按下那个熄灭之后呢,它左面是熄灭,然后点,点亮之后它这个 led 灯就亮起了,同时它那个上面也有一些,呃,开发板反馈过来一个信息啊, 接着是一个对话的一个模式,这里就显示你刚才那个按钮控制那边接收到了一个数据,或者是发送给开发版的一些数据,都会显示在这里。 另外一个专业调试新建之后呢,我们就可以在这里面去编辑空键,然后创建新的一个控制界面, 然后这个是一个代码实现的, 本节课我们要实现呃,像刚才这样,呃,用蓝牙调试器,然后通过按下按钮来控制这个开发版的 l、 e、 d 灯亮灭的话,我们就需要去按照这样一个形式, 这首先是通过嗯按钮要发送一个制服,发送制服之后呢,开发版这边就接收到数据,如果判断接收到了一个数据是一,那就使 led 灯亮灭熄 灭啊,并且发送 led is off 这一串制服给那个 app 啊。如果 app 发送一个制服二,开发完接收到之后呢,就点亮 led 灯,同时发送 led is one。 要给那个手机 app 嘛? 那首先第一步就是先需要定一些变量以及宿主, 那首先第一个就是要先定一个大小为一的一个长度为一的一个制服型数组,这个就用来存放接收数据,接收到了一个数据, 然后第二个是一个标志位,我们需要嗯一个标志位,然后用来判断接收数据, 也就是说如果你接收到一个数据是一的一个制服,那就将这个标志位置一嘛, 同理,如果接收到了一个数据是二,那就将这个标志位置二,然后第三个一的那个变量就是一个差行的一个制服啊,制制服宿主 啊,这个这个宿主呢,就是一个错误警告的一个信息啊。然后接着是一个字母型的一个嗯, led 灯点亮的一个宿主,它存放的是 led 灯被点亮的一个信息, 最后一个就是一个也是一个宿主,它就是存放那个 led 灯熄灭的一个信息。 而我们如果要将这些数组发送给 app 的 话,就可以调用那个串口发送函数嘛,要将这些数据发送给那个 app, 就 可以将这些反馈信息反馈给给那个 app。 接着呢,我们本节课需要使用到串口中段接收回弹函数, 我们在这个回弹函数里面呢,就是要去判断接收到了一个数据,并且嗯做出对应的一个操作。 首先呃,就是先要判断你那个进入中断,呃进入那个回弹函数里面的一个串口号是哪一个,那么这里就是就要判断这个是否等于串口一嘛, 因为我们使用的那个 pa 九和 pa 十就是创口一,然后接着是对那个接收到了一个数据进行一个判断,如果等于一的话,那就熄灭 led 灯,同时将这个标志位置一, 如果等于二,那就将啊那个 led 灯点亮了,同时将这个标志位置二, 如果等于其他制服,那就发送一个错误的一个警告, 然后这里这一段就是对这个数据进行判断的,那判断完之后呢,我们还需要重新打开中断,不然下一次就接受不到数据了 啊。然后呢这一个接收中断的一个函数呢?跟这这里是一样的,那首先第一次接收数据就是需要在这个 user core beacon 二这里, 然后 user core and 按中间去调用这一个函数,这样才能开启第一次的一个中断接收。 然后接着我们来到这个 y 的 循环里面,我们需要再呃去判断这个标志位,有去执行对应的一个操作。 那那么为什么我们不在这个回调函数里面去判断这个标志位呢?这是因为我们呃这里引用调用了这个延时函数,延时函数是不能在这个回调函数里面去调用的,这样会卡死,所以说我们需要使用这个标志位在外的循环里面, 然后去调用这个演示函数,那么标识位等于一的话呢,就发送这个 led is one 这一个一这一串字母,也就是,嗯把这个数组的名称修改一下就可以了, 然后等于二的话,就发送一个 led is one 的 一个制服串嘛,同时延时五百毫秒, 然后这里就是有一个视频,就是一个颜色点,点击这个那个按钮,就可以看到这个左边的那个 led 灯被点亮了,然后点击熄灭,左边这个就熄灭了, 同时上面有一些嗯,开发版反馈过来的一个信息啊,这 led 被点亮了, led 灯啊熄灭了, 然后接着是一个实践操作,那本节课的话,我们需要就直接使用 那个上节课的一个代码,那我们直接复制, 让我们改一下名称, 改成蓝牙,然后接着我们直接打开这个 qq max 的 一个工程, 打开之后呢,我们就看一下这些配置,你看一下这些配置基本基本已经配置好了,这时钟以及 啊外部时钟这些,还有工程名制这些都已经配置好了。所以说我们本节课只需要改一下这个串口,我们需要改一下这波特率改为九六零零,就是因为我们刚讲到这个, 我们我们那个蓝牙模块保持那个出厂设置一个值嘛, 然后蓝牙模块这里是九六零零,如果蓝牙模块要与开发板进行一个通信的话,那么就需要保证两边的两个设备的那个波特率是一样的,也就是也就是那个开发板的一个波特率也要设置为九六零零。 然后设置完之后就可以直接点击生成工程了。 那点击生成工程之后呢?我们就可以啊直接翻译一下,翻译没有报错,没有报错我们就按照这个 ppt 这里来, 嗯,首先我们需要定义一些变量嘛,是,然后这里我们已经上节课已经呃定义了三个变量了, 然后我们还需要定义两个数值,这里我就直接复制这个 从另一个工程里面去复制。已经定义好的 一个是 led 的 led one 的 一个宿主和 led off 的 一个宿主,然后里面的呃宿主里面的数据就是 led is one, 然后还有一个换行符, 然后接着是一个窗口回调,接收回调函数, 那我们需要在这里修改一下,我们接收到那个一的一个数据的时候,我们将这个标志位之一同时将这个 led 灯进行一个熄灭,然后接着 如果接收到了一个数据是二的话,就将这个标志位置二,如果收到其他制服,就将这个标志位置三同时发送这个错误一个警告。 然后,呃,这个是判断串口号嘛?到底是哪一个串口进入了这个接收回答函数, 然后这一段的话,这一段代码就是判断你接收到了一个数据到底是一二还是其他一个制服,如果是一的话就执行对应的一个操作,二的话就执行对应的一个操作, 如果是其他制服也是执行对应的一个操作,那执行完之后呢?啊,再次打开中断,然后去重新接收接接收那个数据,如果不打开这个中断的话,那么你接收完之 啊一次之后呢,就下一次就无法接收了,所以说需要在这里重新调用这个接收你的函数啊,重新啊调用这个接收中断函数, 然后就可以啊进行下一次的数据接收了, 然后注意的话,这个要在 user core begin 零, and 的 零和 user core begin 零之间的, 否则啊,暂时变异,从这个 qqms 里面去变异的话,去生成代码的话,这些如果不在这个 begin 和 and 之间的话,你的那些写的代码就会就会被清除掉。 然后接着是需要在 user core beacon 二和 user core and 二之间去调用这个接收中断函数,那这个函数是跟这个一样的, 然后开启串口的一个接收中断,第一次接收数据就是,嗯,从这里去开始接收的, 接收完之后呢,他接收,接收到数据他就自动进入这个雷达函数里面,然后去判断这些数据。判断之后呢再再次开启,开启之后呢,如果如果再接收到数据,那,那那又重新进入了这个雷达函数里面, 那就是可以循环,就是判断判断接收到的一个数据,然后接着来到这个 while 循环里面,我们来到这个 begin 三和 begin and 三之间嘛, 那我们需要去判断这个标志位。首先第一个标志位呢,我们就要,嗯 判断是等于一等于二,如果等于一的话,就发送这个 i e d is one 的 一个一串制服, 如果等于二就发送 i e d is off 的 一个制服串,如果等于二就发送 i e d is one 的 一个制服串,那我这里是也直接复制 这里修改一下, 等于一呢就发调用这个发送函数嘛,然后改一下这个呃串口名称,串口名, 对,呃这个宿主名,改一下这个宿主名就可以了,然后下面就是改一下对应的一个宿主名。 有延时五百毫秒,每每隔五百毫秒要发送一次,让我们编辑一下, 编辑没问题就可以直接下载,有下载之后呢,我们就可以按照这个这个视频 下载之后呢,直接就打开那个手机嘛,然后去搜索,搜索连接成功之后呢,然后编辑一下这个数据,那就可以点击这个按钮就控制了。 本节课的话我们的内容就到这里了。

有小伙伴付费三百五十元定制了一个非常简单的关于多标签远程服务器批量管理的工具。那么这个软件呢,其实非常简单啊,因为用户的应用场景呢,它如果说只有一个服务器,那都不需要软件,你直接用 win、 windows, 微软自带的附件里边就有一个远程桌面连接就可以,但是呢它是有很多个,对吧?你比如说是由一次性导入五十个,一次性导入一百个,它可能会有很多个服务器, 然后如果说都使用这里的,像我们常规的这个,在如果说你是只有一个的话,你都不需要用软件,我先带着你看一下,这里有一个附件, 附件里面呢有一个远程桌面连接,对吧?你如果说只有一个的话,你直接用这里的就可以,但是呢你如果说有很多个,你就可以使用咱们的这个工具,它的优势是什么呢?你可以通过导入 t 叉 t, 或者通过导入 excel 来对数据进行登录, 比如说我们现在导入 t 叉 t, 我 现在在这里随便选一个,那么 t 叉 t 之中呢,我们可以看到包括说 ip 地址,包括说备注,包括说标签名称,这些呢都是我们可以自定义。咱们将来呢要进行批量化的管理,可以通过这种方式进行管理, 同时呢我们也可以在这里进行搜索,一个两个的话,你肉眼一眼就能看出来,但是如果说你有很多个,你可以在这里进行搜索,然后呢还要导出新建,新建呢,就是我们不从表格里边进行导入,我们可以在这里 新建,对吧?输入分组,分组名称,比如说随便写一个啊,分组二,分组二是吧?然后 ip 地址呢?得,这些我都先随便写啊,给大家做一下演示, 看到了吧,这个呢,就是我们手动添加它的一个功能,然后如果说你需要进行编辑,也能在这里进行编辑啊,刷新啊,新建啊,导出啊,都是类似的意思。那么如果说你想要进行连接,方式也比较多,最简单的呢,打个比方,我们选中它,然后在这点击登录也可以, 对吧?我们现在也能够直接在这里进行连接,那么其他的也是一样。再举个例子,比如说这一个, 对吧?也是可以进行正常连接的,那么它的功能呢,还是比较完善的,如果说大家有类似的定制诉求,也可以私信我们。同时呢,如果说您需要开发相关的工具,或者说觉得咱们软件做的还不错,麻烦您给我们 点个关注,点个赞,动动您快乐的小手指,祝您新的一年里身体健康,万事如意,新年新气象,明年生八个月。好嘞,拜拜。

今天 lm studio 团队发布了他们最新的零点四点五版本,这个版本加入了 lm link 的 功能,可以让安装了 lm studio 的 设备之间远程互相访问大模型,并使用远程设备推理, 这是什么意思呢?比如你有一台安装了 lm studio 的 一百二十八 g 的 macbook pro, 然后你的另外一台设备是安装了 lm studio 的 一台极显笔记本,你可以从这台极显笔记本远程访问你的 macbook pro, 把 macbook pro 当做一台大模型推理服务器来使用,这样你在这台极显笔记本上也可以进行高效的大模型推理了。 lm link 是 lm studio 团队和 tail scale 一 起开发的,如果你不知道 tail scale 是 什么的话,你可以简单的看做一个设备到设备之间的 vpn 即可, 这并不是仅限局域网哦,而是可以穿透内网,让你在任何地点都可以访问远程设备推理大模型哦,使用也是超级简单。我们只需要注册一个 lm studio 的 账户,然后点击这里创建一个 link。 由于我已经创建好了,所以进来之后可以直接看到我已经加入的两台设备,一台是 m 三 max 的 macbook pro, 一 台就是 dinkpad p 十六 v 键。二,目前有五台设备的上线,点击这里的三个点,可以选择删除已经加入的设备, 然后来到 lm studio, 首先确保更新到了最新的零点四点五版本,更新到最新版本后,在左下角就可以看到一个 lm link 的 图标,点击就能看到目前加入的设备和链接情况,这里显示的是当前设备,而这里则是你加入远程设备 中间,这里则是显示远程设备信息,我们可以看到 macbook pro m 三 max 右侧则是该设备上的模型,目前显示已经加载了千万三点五二十七币的稠密模型, 点击三个点可以远程卸载模型,然后点击任何的模型就可以加载模型了。这个加载界面和本地加载是完全一模一样的。点击加载,此时远程在我的 macbook 上也可以看到远程设备发来的模型加载请求。 加载完毕后就可以来到聊天界面选择加载的模型,然后开始愉快的聊天啦。怎么样,是不是非常简单,速度也完全不用担心,七十三个 tokens, 每秒和本地推理速度一模一样。 来到模型加载界面的话,你会发现操作和本地模型几乎一模一样。远程设备的模型会在名字前面显示一个图标,点击加载的话也是和本地体验完全一致的。 最后,既然模型加载的体验上和本地完全一致的话,那 open code 的 这些支持 l m studio 的 代码智能体也是可以完美运行的哟! 体验上和本地模型完全没有区别。选择 l m studio, 然后选择模型。这里以 g p t o s s 二十 b 为例, 我们可以看到 open code 的 推理完全是通过远程模型完成的。现在你可以非常方便的构建一套家庭 ai 工作平台了, 只需要一台 m 四的 mac mini, 六十四 g, 装上 lm studio 后直接以无头模式运行,你就拥有了一台百分百完全私人的在哪里都可以访问的 ai 推理服务器啦!