使用rust烧录esp32开发板(2)
现在开始烧录。
1. 创建项目首先到 https://github.com/esp-rs/esp-template 这里把文件下载本地。这样做是因为,cargo generate命令访问 github 在终端,如果翻墙还需要额外指定终端开启代理,过于繁琐。于是我们索性本地部署。关于该指令的教程链接在这里
1cargo generate --path /path/to/local/template
这个指令是交互式的,按照要求选择自己的项目名和板子类型即可
2. 编译和运行12345678#校验:cargo check --release#编译:cargo build --release#烧录:cargo run --release
espflash 会自动识别串口,把代码烧进板子里。
以上就是全部教程啦~
使用rust烧录esp32开发板(1)
买来 esp32 想要学学 rust 开发嵌入式,结果第一步就被卡了好久,有必要记录下来纪念一下。
首先,先列举一下我之前学过的几种 esp32 烧录方式。
luatos合宙公司使用了 LuaLools,通过向板子烧入固件,从而快捷的把 lua 代码烧入板子里。
操作简单容易,教程可见官方链接
下图为 tool 界面
注意,版本更新之后,luatools 对固件的烧入似乎做了调整,使用最新的编译器时最好参照教程重新学习。
arduino利用 arduinoIDE 来进行烧录,这是学校教学时的方法,同样很简单便捷,不需要额外配置环境,
注意选对自己对应的开发板就行了,然后编写 arduino 代码即可。
如图所示
rust重点来了,现在我们来讲讲如何利用 rust 来开发 esp 板子。
我部分借鉴了 B 站这位 up 主的操作(链接在这里),还有 chatgpt 也帮了我很多。
不过还是让我按自己的逻辑总结一下:
1. 下载时选对工具链一般有两种,分别是gnu和msvc,选后者使用!
我一开始使用gnu来调试代码,很方便,可是下载库的时候却始终下不动,有各种各样的报错。
...
优化博客网站访问(3)
这一次对我的博客继续更新,增加了以下的特性:
加密文章这里使用了hexo-blog-encrypt 插件,只需要在文章的开头加上类似参数即可:
12345678910111213title: Hello Worldtags:- 加密文章 tagdate: 2020-03-13 21:12:21password: muyiioabstract: 这里有东西被加密了,需要输入密码查看哦。message: 您好,这里需要密码。wrong_pass_message: 抱歉,这个密码看着不太对,请再试试。wrong_hash_message: 抱歉,这个文章不能被纠正,不过您还是能看看解密后的内容。---
详情参考对 Hexo 博客文章进行加密
在线聊天这里使用了 chatra 的聊天室功能,体验下来效果不错,拥有非常多的数据处理。但是美中不足的是,优先体验只有 10 天,之后的免费版可能就不尽如人意了?静候佳音~
butterfly 官方教程如下:https://butterfly.js.org/posts/4aa8abbe/#%E5%9C%A8%E7%B6%AB%E8%81%8A%E5%A ...
优化博客网站访问(2)
这一次,经小伙伴提醒,我再次意识到部署在本地的字体文件依旧是我最大的提速障碍。
于是我开始寻求 cdn 服务,也成功让我找到了一家提供免费的服务———中文网字计划。https://chinese-font.netlify.app/zh-cn/
具体操作非常简单,在配置文件 config.butterfly.yml 中找到 inject 模块,在头部插入 css 引用的 link 即可(link 由网站提供)。
123456inject: head: # - <link rel="stylesheet" href="/xxx.css"> # - <link rel="stylesheet" href="/myfont/free_font.css"> - <link rel='stylesheet' href='https://chinese-fonts-cdn.deno.dev/packages/syst/dist/SourceH ...
从零开始的rust学习(2):复合类型
rust 里的复合类型比较重要,需要牢牢掌握。
字符串首先是字符串类型。和其他语言有较大的区别,rust 里的字符是 unicode 类型;字符串是 UTF-8 编码。前者是每个字占用固定的 4 字节,后者所占用空间在 1~4 之间不定。
对于字符串,rust 也有两种类型:String 和&str
这两种类型之间的转换如下:
1234567891011121314//&str -> StringString::from("hello,world")"hello,world".to_string()//String -> &strfn main() { let s = String::from("hello,world!"); say_hello(&s); say_hello(&s[..]); say_hello(s.as_str());}fn say_hello(s: &str) { println!(& ...
从零开始的rust学习(1):所有权和借用
这是第一篇关于 Rust 自学的博客。今天我们将介绍 Rust 最重要的特性之一:所有权(Ownership)。
所有权规则在 Rust 中,所有权遵循以下三条基本规则:
每一个值都被一个变量所拥有,该变量被称为值的所有者。
一个值同时只能被一个变量所拥有,或者说一个值只能拥有一个所有者。
当所有者(变量)离开作用域范围时,这个值将被丢弃(drop)。
栈与堆首先讲解栈和堆:
栈(Stack):需要确定内存的大小,一般用于小内存且固定不变的变量。
堆(Heap):内存大小未知,因此适用于大内存或会改变的变量。
示例代码1. 浅拷贝(栈上内存的直接拷贝)12let x = 5;let y = x;
2. 引用(指针)和借用(拷贝指针)12345fn main() { let x: &str = "hello, world"; let y = x; println!("{}, {}", x, y);}
3. 克隆(深拷贝)12345let s1 = ...
小米AX3000T硬路由刷入openWRT连入深澜校园网
小米 AX3000T 硬路由刷入 openWRT 连入深澜校园网作为网络小白,趁着国庆长假入手了一款新手友好的硬路由,打算学习学习自己连接网络,假期即将结束,在此总结反思过程中遇到的问题和解决方法。
给 AX3000T 刷入 openwrt 系统硬路由到手之后,我们需要把它刷成灵活性更高的新系统。这里我主要参照了小米 AX3000T 保姆级免拆刷 openWrt 教程以及排坑指南_ax3000t 刷 openwrt-CSDN 博客这篇博客文章。
这里需要注意的一共有以下几点:
1、降级固件版本
2、解锁 ssh 代码
3、刷入 uboot
4、刷入 openwrt
我们买到手的 ax3000t 正好是老版本的,有 ssh 漏洞可以使用,按照教程获取权限后即可进入后台。完成备份等一系列准备措施之后,最重要的一步就是刷入不死 uboot,这里我直接购买了作者的链接,没有自己折腾。有了 uboot,我们就可以在重启路由器之后直接刷入三种类型的系统,而不需要担心刷错变砖等问题。
最后一步就是刷入 openwrt 的系统了。但不幸的是,笔者在这一步虽然软件操作基本正确,却因为网线配置出错,耽误了 ...
利用cpolar免费版实现《戴森球计划》联机
利用 cpolar 免费版实现《戴森球计划》联机游戏简介《戴森球计划》是一款融合了科幻冒险与经营管理元素的优秀游戏。玩家将在浩瀚宇宙中探索未知星球,建立从零开始的工业帝国,最终建造一个能量巨大的戴森球,掌控恒星的力量。尽管官方版本仅支持单人游戏,但得益于玩家社区的热情创作,各种 MOD(模组)应运而生,使得局域网多人联机成为可能。
不仅如此,借助像 cpolar 这样的内网穿透工具,即使远在不同的地点,玩家也能够实现跨公网的多人联机体验,突破了传统单机的限制,为这款游戏增添了更多互动和乐趣的可能性。无论是与好友一同协作建立银河系级别的工程项目,还是在竞争中展现策略智慧,《戴森球计划》都能提供令人沉浸的体验。
下载 mod下载 MOD要实现《戴森球计划》的多人联机功能,首先需要下载并安装一个名为 r2modman 的管理软件。你可以从R2ModMan - Download [Official]获取这个工具,它集成了许多玩家制作的 MOD,极大简化了安装和管理的过程。
成功安装并启动 r2modman 后,首先在软件界面中找到《戴森球计划》的游戏封面,然后点击“Select game” ...
stm32之HAL库函数的使用
HAL 库函数的使用关于 HAL 库,我们通过 cubeMX 可以完成初始化等代码生成,极大的提高了 stm32 的使用效率.但是重要的函数,还是需要我们自己掌握,这里首先学习 hal 库函数的使用.之后抽空对 cubeMX 进行细致的了解.
GPIOgpio 是 stm32 里基本的功能,其中经常使用的函数如下:
翻转电平
HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)用来 控 制 LED 的亮灭。
读取引脚电平状态
HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)该函数可以返回状态值 0 或 1.
写入引脚电平状态
HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)功能与读取相反
UART串口发送数据
HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t ...
FPGA题目
b82b523c8ec75ad2652a246e51704d46469a00c6178b99202d6102d8d9507c9fcba358a34f0aa76cdd1858e7d17e0d443a253d3f66f6a292b70d80dde60cadc0c0057d50f634260b58f4beef1c647d427dc7f39d9bc8fe6e248b0832da7056919080746d4840fa3b269778addc56424220d6879ab298a35a5410eb92d4833de07dd2f2f0a77cd70a91b7bb7c637d20142fe907eee65e7a899155ff1d649afbb453babb5ae72ed42d1e6f2ef390e6f0ed699d3e0b3fafa16e06d952828edd88cc5165b31c61b884916c639b2a46dd46cc41a4b99cdd73391aa6c30e6a777b37cbef6b998af96d52d99bfb8bf219f06deaf5e8f23cad5963930 ...