- 2025-04-04
-
发表了主题帖:
【 嵌入式Rust修炼营】初级任务3:编译与串口烧录
1.第一步,打开终端拉取做好的开发环境包示例代码
https://github.com/hysonglet/py32f030-hal.git
git clone https://github.com/hysonglet/py32f030-hal.git
cd py32f030-hal\examples
安装依赖和工具
cargo install cargo-binutils
rustup component add llvm-tools
首先编译该程序
cargo build --example embassy_blinky
接着生成二进制bin文件
cargo objcopy --example embassy_blinky -- -O binary embassy_blinky.bin
使用如下指令完成程序烧录
2.DEMO通过USB线
3.通过:pyisp -p 测试是否有通;其中COM6就是;
4.下载文件: pyisp -s COMOT按钮的同时再按REST按钮,然后先松开REST ,两三秒后再松开BOOT按钮。就显示下载数据了。
5.最后灯开始闪烁了
- 2025-04-03
-
发表了主题帖:
【嵌入式Rust修炼营】初级任务2:打印文本文件的每行数据
完整程序如下所示
## 主要使用 `?` 操作符,简化错误处理,使用迭代器链式调用,统计文件行数和单词数。
use std::{
fs::File,
io::{self, BufRead},
};
fn main() {
let arg = std::env::args();
let files: Vec<_> = arg.collect();
println!("file count: {}", files.len());
let mut iter= files.iter();
println!("exe name: {}", iter.next().unwrap());
while let Some(file_name) = iter.next() {
println!("file: {}", file_name);
match File::open(file_name) {
Ok(file) => {
let reader = io::BufReader::new(file);
for line in reader.lines() {
if let Ok(line) = line {
println!("{}", line)
}
}
}
Err(e) => {
println!("{:?}", e)
}
}
}
}
接下来分块解析:
首先导入标准库中的文件系统和输入/输出模块
use std::{
fs::File,
io::{self, BufRead},
};
在主函数中,首先进行命令行参数处理,并将参数收集到字符串向量中
let arg = std::env::args();
let files: Vec<_> = arg.collect();
接着创建一个迭代器来逐个处理文件
let mut iter = files.iter();
println!("exe name: {}", iter.next().unwrap());
使用while let模式匹配处理文件
while let Some(file_name) = iter.next() {
尝试打开和读取文件,如果打开成功,则逐行打印,如果打开失败,则打印错误信息
match File::open(file_name) {
Ok(file) => {
let reader = io::BufReader::new(file);
for line in reader.lines() {
if let Ok(line) = line {
println!("{}", line)
}
}
}
Err(e) => {
println!("{:?}", e)
}
}
打印main.rs
打印Cargo.toml
- 2025-04-02
-
发表了主题帖:
【嵌入式Rust修炼营】初级任务1:冒泡排序
1.初始化项目
cargo new my_test1 --bin
然后cargo run,输出Hello,World!
修改文件使用冒泡排序
fn bubble_sort<T: PartialOrd>(arr: &mut [T]) {
let len = arr.len();
for i in 0..len {
for j in 0..len - i - 1 {
if arr[j] > arr[j + 1] {
arr.swap(j, j + 1);
}
}
}
}
fn main() {
println!("This is sort of a test!");
let mut test_numers = vec![9,8,4,3,2,1];
println!("Before sorting: {:?}", test_numers);
bubble_sort(&mut test_numers);
println!("After sorting: {:?}", test_numers);
}
【总结】熟悉了解基本语法之后,上手冒泡排序挺简单的
- 2025-03-23
-
回复了主题帖:
【新年点灯】小小彩灯秀起来!
-
回复了主题帖:
【新年点灯】小小彩灯秀起来!
本期项目制作一个8*8像素屏,作为一个时钟、氛围灯、桌面小摆件、实时滚动字幕等等,总之非常酷炫
为了令像素灯实现更小尺寸,使用了更小尺寸的WS2812B-2020幻彩灯珠,也增加焊接难度。如不追求尺寸小巧,结构紧凑,也可直接esp8266开发板和8x8全彩像素屏进行硬件搭建。只需要用杜邦线连接以下3处:
ESP8266开发板
8x8 WS2812B像素屏
5V
VCC(V+)
GPIO4(D2)
IN
GND
GND(V-)
软件方面
开发工具
该项目使用Arduino进行开发,需要安装Arduino的ESP8266支持,如未安装,请自行查找相关资料进行安装。
使用Arduino Library 管理工具安装下面五个依赖库:ArduinoJson、FastLED、Time、WebSockets、WiFiManager
程序编译下载
1.下载附件中的程序,用arduino打开文件夹同名的.ino文件;
2.选择开发板为Generic ESP8266 Module,选择相应的端口;
3. 点击下载,若使用本项目硬件,则在编译完成下载时,需要在屏幕显示Connecting...时点按一下RST按键(出现下划线前),方能进行下载。
4. 如果出现无法下载的情况请检查esp8266是否虚焊、漏焊;RST按键无法进入到烧录,请使用镊子短接GND和GPIO4进行烧录;如果出现编译失败的情况请检查依赖库版本如FastLED、WebSockets可以多尝试几个版本
注意原项目外壳尺寸小于开发板尺寸,需要自行修改
-
回复了主题帖:
【新年点灯】小小彩灯秀起来!
okhxyyo 发表于 2025-2-19 11:14
好看哎。。分享分享制作过程和资料呀
好的好的,
- 2025-03-15
-
回复了主题帖:
嵌入式Rust修炼营入围名单来啦,一起度过嵌入式Rust学习时光的小伙伴集合啦~
个人信息无误
- 2025-03-05
-
回复了主题帖:
>>征集 | 晒电机控制痛点与难题,一起寻求最优解!
在电机控制系统中,抗干扰性是确保系统稳定运行的关键因素,然而目前面临着诸多挑战:
电机自身电磁辐射干扰:电机在运行过程中,由于电磁能量的转换会产生复杂的电磁辐射,而电机本身就是一个强干扰源。以工业流水线为例,多个电机协同工作时,各自产生的电磁辐射相互交织,严重干扰控制信号的传输。这会导致信号发生畸变,进而使得电机转速控制出现失准现象,最终造成生产精度下降。
电源噪声干扰:工业电网存在电压波动以及尖峰脉冲等问题,这些电源噪声会通过电源线路进入电机控制系统,对系统中的芯片和功率器件产生干扰。比如,电机驱动芯片在受到电压波动影响时,可能会出现逻辑误判,功率器件的开关也会出错,甚至可能导致器件损坏。
电机机械振动干扰:在风机、泵类等设备中,电机高速旋转会引发机械振动。这种振动会传递到传感器和控制电路,例如转速传感器会因振动产生噪声,从而误导系统对转速的判断,严重影响控制精度与系统的稳定性。
为提升电机控制系统的抗干扰性,通常可采取以下措施:
- 硬件方面:通过隔离控制电路与干扰源、合理布局元件以及采用屏蔽罩等方式减少干扰。
- 软件方面:设计复杂的滤波算法来处理干扰信号。
但在实际应用中,小型设备由于空间有限,难以实现理想的隔离与屏蔽措施;同时,复杂的算法不仅会增加处理器的负担,还会提高成本。因此,如何在空间和成本的限制下,有效地提高电机控制系统的抗干扰性,成为了目前亟待解决的难题。
- 2025-02-27
-
回复了主题帖:
【新年点灯】小小彩灯秀起来!
秦天qintian0303 发表于 2025-2-22 14:43
这是点阵屏还是TFT彩屏啊?
点阵屏
- 2025-02-26
-
回复了主题帖:
嵌入式Rust修炼营:动手写串口烧录工具和MCU例程,Rust达人Hunter直播带你入门Rust
参与理由与个人编程基础 工作和业余开发中,内存问题频繁困扰我,期望借Rust从根本解决。我长期从事C/C++开发,嵌入式开发经验丰富,多次在eeworld评测任务中出色完成工作 。 修炼任务完成预估 研究修炼任务和活动时间表后,我有信心能完成从初级到高级的所有任务 。 Rust学习经历与活动期望 此前学Rust时,发现它针对C/C++典型内存场景有新范式,像能杜绝C++内存泄漏,但初期上手难。希望借此次活动,深入理解Rust内存新范式,熟练运用到开发中,解决内存难题,提升系统编程能力 。
- 2025-02-19
-
发表了主题帖:
【新年点灯】小小彩灯秀起来!
[localvideo]c6215ce3aca7b6d3433aeb9a05ab0052[/localvideo]
[localvideo]bab6eb60573a3fa6265d4b9e8626b104[/localvideo]
[localvideo]b5b1ee032251b9ff3b26fe714956e742[/localvideo]
-
回复了主题帖:
>>征集 | 晒电机控制痛点与难题,一起寻求最优解!
抗干扰性角度:电机控制系统中,抗干扰性是保障系统稳定的核心,但面临诸多难题。 电机自身是强干扰源,运行时电磁能量转换产生复杂电磁辐射。如工业流水线,多电机协同,辐射交织干扰控制信号传输,导致信号畸变,电机转速控制失准,生产精度下降。 电源噪声影响显著。工业电网电压波动、有尖峰脉冲,经电源线路进入系统,干扰芯片和功率器件。像电机驱动芯片,电压波动会致逻辑误判,功率器件开关出错,甚至损坏。 电机机械振动也有干扰。风机、泵类设备中,电机高速旋转引发振动,传递到传感器和控制电路。如转速传感器因振动产生噪声,误导系统对转速的判断,影响控制精度与稳定性。 提升抗干扰性,硬件上需隔离控制电路与干扰源、合理布局元件、采用屏蔽罩;软件上要设计复杂滤波算法。但小型设备空间有限,难以实现理想隔离与屏蔽,且算法增加处理器负担、提升成本。如何在空间、成本限制下有效提高抗干扰性,是亟待解决的难题 。