ccccccc@

    1. 已经参加
    2. cc1989summer 发表于 2024-11-2 13:03 哥们,你这帖子在那干讲,没开发板跑的实物图啊。
      后面加,哈哈哈
    3. cc1989summer 发表于 2024-10-30 21:46 哥们,翻到开发板背面,靠近USB1上面,有个芯片U1:MP23DB01,就是数字麦克风
      o.o!!!我看手册是写有麦克风,但是又看示意图写的是一个麦克风接口。原来是这样!
    4. cc1989summer 发表于 2024-10-29 00:31 楼主,STM32H7S78-DK本身就带数字麦克风,理论上可以通过该麦克风实现音量检测……
      我开始也是看他有数字麦克风,才想测评弄这个,但是我只找到一个麦克风接口,有点疑惑。所以就干脆直接买了一个麦克风
    5. Jacktang 发表于 2024-10-20 08:50 这个对检测的音频信号有没有要求呢,比如最低的频率大小  
      按照目前的采样率的话,理论上的最低频率大约为1hz,最高大约是500hz的样子
    6. Jacktang 发表于 2024-10-10 07:26 右键设置appli为活动项,进行编译,但是使用mdk直接进行烧录时候,开发板没有反应,这个是不是编译环境那里 ...
      编译出来的文件直接烧录又没有问题,可以正常运行。而且mdk点击烧录时候,他又显示烧录成功。
    7. 读书活动颁奖:《Rust实战》 4/56 EEWORLD颁奖专区 2024-09-12
      下次换个不用互动的活动参加,退回邮费自理感觉有点被伤到。。。
    8. 个人信息无误,确认可以完成评测计划
    9. yangjiaxu 发表于 2024-7-4 16:42 rust的中断都包含了什么?是CPU有紧急事情处理会产生中断?还是程序崩溃会有中断呢?
      Rust 中的中断通常指硬件中断,由外部设备产生,用于处理突发事件。涉及中断向量表、处理程序、优先级与嵌套、上下文保存和恢复等。Rust 本身无直接中断支持,需通过操作系统或硬件接口实现。程序崩溃是否产生中断取决于具体情况,有时会触发相应中断处理机制
    10. 《Rust实战》书友互动第十一集:内核 14/4523 嵌入式系统 2024-07-01
      如今,Rust 内核编程在嵌入式领域备受关注。其强大的内存安全和并发性看似对嵌入式 MCU 颇具适用性,但在实际应用中,移植现有代码存在诸多难点,比如现有的 C 或 C++ 代码库由于语言特性的差异,在移植到 Rust 时,数据类型转换、指针操作以及内存管理方式的改变都可能带来大量的修改工作。而且获取足够支持也面临挑战,例如部分主流的嵌入式 MCU 厂商可能尚未提供完善的开发文档、工具以及技术支持,Rust 社区对于某些特定的 MCU 架构和新出的芯片型号,可能在硬件抽象层和驱动库的更新速度上无法及时跟上硬件发展的步伐。   就我个人而言,觉得 Rust 的严格安全性和高效性理论上很适合资源受限的嵌入式环境。不过,它复杂的语法和全新的编程思维难免增加学习与开发成本,而且当前其生态对特定 MCU 的支持或许还不够完善。这也引出了一系列问题,像 Rust 的编译结果在不同架构的嵌入式 MCU 上性能差异究竟多大?社区提供的库能否满足特定硬件功能需求?怎样才能降低新开发者将 Rust 应用于嵌入式 MCU 的门槛?
    11. nemon 发表于 2024-6-11 15:09 如果想实现类似c语言中#if来导入库的功能,用什么形式? 顺便问个偏门问题吧——哪家NTP服务 ...
      在 Rust 中没有直接类似 C 语言中 #if 来导入库的方式。Rust 的依赖管理是通过 Cargo.toml 文件来进行配置的。至于哪家 NTP 服务器时间不准,这也不确定,不同的 NTP 服务器可能会因为各种原因出现短暂的时间偏差,一般来说知名的、广泛使用的 NTP 服务器可靠性会高一些。
    12. 在 Rust 中,如何使用异步编程来高效地处理大量并发的网络连接,同时又可以确保数据的可靠传输和低延迟响应呢
    13. 这个要看到具体代码才能知晓问题的具体原因,至于contiguous()不能使用,他的作用是将非连续的张量转换为连续的张量。这在进行某些操作(如重新排列或改变形状)后尤其重要,因为某些操作可能会导致张量在内存中变得不连续。你可以尝试使用 x = some_tensor(某张量) x = x.clone().reshape(x.shape) 该方式可以一定程度上确保张量连续且具有相同形状,但是并不能等效contiguous()
    14. 《Rust实战》书友互动第七集:文件与存储 11/4196 嵌入式系统 2024-06-03
      yangjiaxu 发表于 2024-5-30 22:57 提问: 第七章讲到了文件与存储,我发现编译好的文件生成之后都是个可执行文件,那么如果想要在MCU职中 ...
      实际上编译出来的elf文件就已经可以进行烧录了: probe-rs-cli download --format elf target/thumbv7em-none-eabihf/release/your_project_name.elf 当然如果你需要bin格式的文件,就需要使用对应的编译链中的objcopy工具进行格式转换: arm-none-eabi-objcopy -O binary target/thumbv7em-none-eabihf/release/your_project_name your_project_name.bin 然后 probe-rs-cli download --format bin your_project_name.bin  
    15. 吾妻思萌 发表于 2024-5-23 11:06 实战问题: let v1 = Vec::new(); let v2 = vec![1, 2, 3]; let s1 = "hello"; let s2 ...
      1、v1 和 v2 的结构存储在栈上,它们的数据(如果有)存储在堆上。 let v1 = Vec::new(); v1 是一个空的 Vec 实例。Vec 是一个动态数组,它在堆上分配内存来存储元素。即使这个 Vec 当前是空的,它仍然需要在堆上有一个表示自身的结构。因此,v1 的实际数据结构(包括指向堆上可能的元素的指针)存储在栈上,而它将来可能容纳的数据会存储在堆上。 let v2 = vec![1, 2, 3]; v2 是一个包含三个整数的 Vec。与 v1 类似,v2 的结构(包括指向数据的指针)存储在栈上,而具体的元素 [1, 2, 3] 则存储在堆上。 2、s1 存储在静态区域,不在栈或堆上。 let s1 = "hello"; s1 是一个字符串字面量,它在 Rust 中是不可变的,编译器会将其存储在只读的静态区域(通常认为是数据段的一个部分),这意味着它既不在栈也不在堆上,而是存在于程序的静态内存区域,生命周期与程序相同。。 3、s2 的结构存储在栈上,数据在堆上。 s2 是一个 String 实例,String 类型类似于 Vec,也是在堆上分配内存来存储其内容。因此,s2 的结构(包括长度、容量和指向实际字符串数据的指针)存储在栈上,而 "Hello" 这个字符串的实际字符数据存储在堆上。  
    16. yangjiaxu 发表于 2024-5-18 15:46 请问: 在Rust中,小数可以使用浮点数类型来表示。Rust提供了两种浮点数类型:f32和f64,分别用于单精度 ...
      其他语言的单双精度的浮点数有效数字,也如此:一个浮点数由三部分组成:符号位 S(表示正负符号)、指数部分 E(阶码,表示次方数)以及尾数部分 M(表示精确度)。   其中,单精度浮点数(float)总共用 32 位来表示浮点数(S:1+E:8+M:23),其中尾数用 23 位存储,加上小数点前有一位隐藏的1(IEEE754 规约数表示法),也就是2的23+1次方,等于16777216,大于10的七次方,但是小于10的八次方。所以他的有效位是7位。换算为十进制时候,会考虑四舍五入的情况,只取六位。   双精度浮点数(double)总共用 64 位来表示浮点数(S:1+E:11+M:52),其中,尾数用 52 位存储,是2的52+1次方,大于10的15次方,但是小于10的16次方。有效位数是 16 位,同样四舍五入时最少 15 位。
    17. 吾妻思萌 发表于 2024-5-8 21:31 提问:不禁想问常量到底该不该存在啊?比如计算器的pi -> 3.1415926...到底是随用随设置,然后释放了好, ...
      常量这东西吧,它还真挺重要的。就像咱们算圆周率π,每次要用到的时候都去设置一遍3.1415926...,那多麻烦啊,还容易输错。还不如一开始就定义个常量,名叫PI,编译器聪明着呢,会直接把它当作一个固定的数值嵌到代码里头(以立即数方式存在二进制文件中),既不怎么占空间,用起来还特快。这样一来,代码看着清爽多了,以后维护也省心。当然,不可变变量(随用随设置)也有它大显身手的时候。想象一下,如果你正在编写一个程序,需要初始化一些数据结构或者配置信息,这些信息在程序运行期间不会改变,但是它们的值可能是在程序启动时通过读取文件、数据库或者用户输入动态确定的,这时候使用不可变变量(let)就更合适了(他通常保存在栈上)。
    18. yangjiaxu 发表于 2024-4-27 21:45 我理解的rust的服用数据类型: 在Rust语言中,复合数据类型包括结构体(struct)和枚举(enum)。 结 ...
      在Rust中,Result 是一种常用的方式来表示操作可能成功或失败,并返回相应的结果或错误信息。它通常用于错误处理,而不是仅仅作为数据返回的方式。Result 是一个枚举,它有两个可能的变体:Ok 和 Err。Ok 包含了操作成功时的返回值,而 Err 包含了错误信息。 如下所示:fn divide(a: u32, b: u32) -> Result<u32, &'static str> { if b == 0 { Err("Cannot divide by zero") } else { Ok(a / b) } }。 在上面例子中,divide 函数尝试进行除法运算。如果除数为零,它返回一个 Err 包含错误信息;否则,它返回一个 Ok 包含结果。 当你只是需要返回数据而不需要表示操作是否成功时,通常可以直接返回数据的类型,而不是 Result。例如,一个函数可以简单地返回一个整数、一个字符串或者一个自定义的结构体等。读取变量的数据值在Rust中非常直接。你只需要使用变量的名字即可。如下:let x = 5; // 定义一个变量x,并赋值为5   println!("The value of x is: {}", x); // 读取并打印x的值  
    19. yangjiaxu 发表于 2024-4-15 21:18 Rust的是否有指针的概念?如果没有,传递数据通过全局变量吗?
      Rust确实有指针的概念,但它通过引用和可变引用来实现,比传统指针更安全。Rust不推荐使用全局变量来传递数据,而是鼓励通过函数参数和返回值来传递,以确保代码的可维护性和内存安全。
    20. lugl4313820 发表于 2024-4-7 14:03 我这几天跟着《Rust实战》还有《Rust语言圣经》,认真的学习了几个例子。我感受就是写个hello world,非常 ...
      目前第一章的历程学起来感觉还是比较顺利,对比之前学其他语言有一种新奇感果然人生最美是初见。而且编译配置/测试这些感觉都比较简单容易上手。

最近访客

< 1/2 >

统计信息

已有55人来访过

  • 芯积分:143
  • 好友:1
  • 主题:18
  • 回复:27

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言