- 2025-01-18
-
回复了主题帖:
H7S-DK使能RTC之后,TOUCHGFX无法正常显示?
RTC在初始化是要调用获取TICK,来获取系统的滴答时钟,使用了阻塞式的进程,从则引起错误。我记得我在评测文章中有涉及到。
具体我在帖子里有说到:
【STM32H7S78-DK】测评+ToucGFX之FATFS文件系统移植 - stm32/stm8 - 电子工程世界-论坛
- 2025-01-17
-
回复了主题帖:
EEWorld 2024年度人物:感恩相伴,共赴新程,携手努力!
感谢各位管管大大们,祝贺得奖的各位大佬们。
- 2025-01-14
-
回复了主题帖:
读书活动入围名单:《hello算法》
个人信息无误,确认可以完成阅读分享计划!
-
回复了主题帖:
【泰坦触觉 TITAN Core开发套件】资实收集以及开发环境搭建
HonestQiao 发表于 2025-1-14 14:24
多谢大佬收集整理,可以好好学习了!
感谢帮主大佬,以后学得向帮主多学习,我这环境还差点意思呀!
-
回复了主题帖:
【泰坦触觉 TITAN Core开发套件】资实收集以及开发环境搭建
iexplore123 发表于 2025-1-14 11:48
这个触觉模块可有意思了
期待后续的创意
是非常有意思的电机,那可以玩多好多花样来。
-
发表了主题帖:
【泰坦触觉 TITAN Core开发套件】资实收集以及开发环境搭建
【前言】
感谢eeworld与泰坦触觉给予这次DIY的机会。虽然开发板收到了好多天了,但是一直在资料收集与学习之中。
【官方资料】
在官方网站titanhaptics.com,需要注册一下登录,才可以下载到开发资料。
在软件下载页面Software - TITAN Haptics,可以有下载软件的链接:
在软件下载页面我首先下载到了快速入门指南的文档:
再在下面,可以下载到基础库,按照快速开始,我将他的三个基础库解压到文档下面的arduino/libraries目录下面:
【开发方式】
开发方式有两种方式可以选择:
1、是Arduino,在入门指南中有详细的说明:
首先需要安装esp32的支持库,安装好后,选择ESP32 PICO-D4开发板:
【示例下载】
在软件下载的页中,有例子下载的链接:
下载好后,有丰富的示例:
【遇到的问题】
官方的快速入门指南中,指出需要用2.05的库来开发,但是我下载了好久都没有下载完成,但是用最新的3.07很快就可以下载好。但是编译时报错:
In file included from c:\Users\liujianhua\Documents\Arduino\libraries\VHBoard\src/VHBoard.h:3,
from c:\Users\liujianhua\Documents\Arduino\libraries\VHBoard\src/Esp32PicoMini.h:2,
from D:\VHExamples\VHExamples\examples\VHChannels\examples\VH_multi_channel_effects\VH_multi_channel_effects.ino:6:
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/datastructure.h:113:14: error: 'string' in namespace 'std' does not name a type
113 | std::string WIFI_PASSWORD="1234567890"; /*!< Wifi password.Default value is 1234567890 */
| ^~~~~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/datastructure.h:1:1: note: 'std::string' is defined in header '<string>'; did you forget to '#include <string>'?
+++ |+#include <string>
1 | #pragma once
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/datastructure.h: In constructor 'DeviceSettings::DeviceSettings(DeviceSettings*)':
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/datastructure.h:153:35: error: 'struct WIFI_SETTINGS' has no member named 'WIFI_PASSWORD'
153 | m_objWifiSettings.WIFI_PASSWORD=p->GetWifiSettings()->WIFI_PASSWORD;
| ^~~~~~~~~~~~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/datastructure.h:153:71: error: 'struct WIFI_SETTINGS' has no member named 'WIFI_PASSWORD'
153 | m_objWifiSettings.WIFI_PASSWORD=p->GetWifiSettings()->WIFI_PASSWORD;
| ^~~~~~~~~~~~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/datastructure.h: In member function 'void DeviceSettings::setWifiPassWord(const char*)':
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/datastructure.h:183:35: error: 'struct WIFI_SETTINGS' has no member named 'WIFI_PASSWORD'
183 | m_objWifiSettings.WIFI_PASSWORD=passWord;
| ^~~~~~~~~~~~~
In file included from c:\Users\liujianhua\Documents\Arduino\libraries\VHBoard\src/VHBoard.h:4:
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h: At global scope:
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:17:12: error: 'string' in namespace 'std' does not name a type
17 | const std::string PREMITIVE_NAME[PREMITIVE_COUNT] =
| ^~~~~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:5:1: note: 'std::string' is defined in header '<string>'; did you forget to '#include <string>'?
4 | #include <II2SoundBus.h>
+++ |+#include <string>
5 |
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:25:10: error: 'string' in namespace 'std' does not name a type
25 | std::string m_strKey;
| ^~~~~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:25:5: note: 'std::string' is defined in header '<string>'; did you forget to '#include <string>'?
25 | std::string m_strKey;
| ^~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:26:10: error: 'string' in namespace 'std' does not name a type
26 | std::string m_strValue;
| ^~~~~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:26:5: note: 'std::string' is defined in header '<string>'; did you forget to '#include <string>'?
26 | std::string m_strValue;
| ^~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:55:10: error: 'string' in namespace 'std' does not name a type
55 | std::string Key()
| ^~~~~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:55:5: note: 'std::string' is defined in header '<string>'; did you forget to '#include <string>'?
55 | std::string Key()
| ^~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:64:10: error: 'string' in namespace 'std' does not name a type
64 | std::string Value()
| ^~~~~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:64:5: note: 'std::string' is defined in header '<string>'; did you forget to '#include <string>'?
64 | std::string Value()
| ^~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:73:10: error: 'string' in namespace 'std' does not name a type
73 | std::string toString()
| ^~~~~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:73:5: note: 'std::string' is defined in header '<string>'; did you forget to '#include <string>'?
73 | std::string toString()
| ^~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h: In constructor 'AdditionalInfo::AdditionalInfo(const char*, const char*)':
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:36:9: error: 'm_strKey' was not declared in this scope
36 | m_strKey = key;
| ^~~~~~~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:37:9: error: 'm_strValue' was not declared in this scope
37 | m_strValue = value;
| ^~~~~~~~~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h: In constructor 'AdditionalInfo::AdditionalInfo(AdditionalInfo*)':
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:47:9: error: 'm_strKey' was not declared in this scope
47 | m_strKey = p->Key();
| ^~~~~~~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:47:23: error: 'class AdditionalInfo' has no member named 'Key'
47 | m_strKey = p->Key();
| ^~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:48:9: error: 'm_strValue' was not declared in this scope
48 | m_strValue = p->Value();
| ^~~~~~~~~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:48:25: error: 'class AdditionalInfo' has no member named 'Value'
48 | m_strValue = p->Value();
| ^~~~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h: At global scope:
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:96:10: error: 'string' in namespace 'std' does not name a type
96 | std::string *m_arrayChnlDesc;
| ^~~~~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:96:5: note: 'std::string' is defined in header '<string>'; did you forget to '#include <string>'?
96 | std::string *m_arrayChnlDesc;
| ^~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:100:10: error: 'string' in namespace 'std' does not name a type
100 | std::string m_strPinDesc;
| ^~~~~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:100:5: note: 'std::string' is defined in header '<string>'; did you forget to '#include <string>'?
100 | std::string m_strPinDesc;
| ^~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:276:25: error: 'std::string' has not been declared
276 | void setChannelDesc(std::string *list, int size);
| ^~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:314:10: error: 'string' in namespace 'std' does not name a type
314 | std::string *GetChannelDesc() { return m_arrayChnlDesc; }
| ^~~~~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:314:5: note: 'std::string' is defined in header '<string>'; did you forget to '#include <string>'?
314 | std::string *GetChannelDesc() { return m_arrayChnlDesc; }
| ^~~
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h: In member function 'void VHChannel::setPinDesc(const char*)':
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:326:41: error: 'm_strPinDesc' was not declared in this scope; did you mean 'setPinDesc'?
326 | void setPinDesc(const char *desc) { m_strPinDesc = desc; }
| ^~~~~~~~~~~~
| setPinDesc
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h: In member function 'const char* VHChannel::getPinDesc()':
c:\Users\liujianhua\Documents\Arduino\libraries\VHCommUtils\src/VHChannel.h:332:39: error: 'm_strPinDesc' was not declared in this scope; did you mean 'setPinDesc'?
332 | const char *getPinDesc() { return m_strPinDesc.c_str(); }
| ^~~~~~~~~~~~
| setPinDesc
exit status 1
Compilation error: exit status 1
根据出错信息调整了好些时间还没有搞好。
估计是库不兼容的问题,待后慢慢查找解决。
- 2025-01-09
-
回复了主题帖:
【泰坦触觉 TITAN Core开发套件】开箱帖
帮主,你的帖子写得太完美了,我都不知道如何写开箱帖了。烧脑中。。。
- 2025-01-07
-
回复了主题帖:
【嵌入式AI挑战营】03GCC交叉编译环境安装
大佬,rknn是大佬你自己训练出来的吗?能不能教一下我。
-
回复了主题帖:
2025年1月 TIOBE 编程指数
这个月python上升9.3%,是不是有史以来上涨最大的一个月呀?
-
回复了主题帖:
ST-Link v2给使用SWD协议给STM32下载程序时怎么就不用手动换接BOOT0了
scake 发表于 2025-1-7 13:33
我为了简单只用了SWD的两根信号线和GND,就是因为我用开发板的时候可以直接下载,我画的一个板子必须接BO ...
Boot0、boot1是必须要把线引出来,或者提前做好规划的。他两个配合决定从MCU的哪里加载启动。
-
发表了主题帖:
《深度学习的数学——使用Python语言》分位数和箱形图
在计算中位数的时个,我们需要找到中间值才能把数据集划分成两部。在数学上,我们说使用中位数对数据集做了二等分。
分位数则用于数据划分到固定大小的分组中,这个因定的大小就是划分到每个分组的数据量。由于中位数将数据划分到两个大小相同的分组中,因此中位数是一个二分位数,有时也称为第50个百分位数,这意味着50%的数据小于这个值。类似地,第95个百分位数是指95%的数据小于这个值。研究人员常常会计算四分位数据并将其命名为quartile。四分位数将数据划分到4个分组中,使得25%的数据在第一个分组中,50%的数据在前两个分组,75%的数据前三个分组中,剩下25%的数据则在最后一个分组中。
-
回复了主题帖:
《深度学习的数学——使用Python语言》用于衡量变化的统计量
梳理一下,这一节讨论了不同的描述性统计量,比如不同的均值(算术平均值、几何平均值、调和平均值)、中位数、标准差以及遇尔才用到的标准误。有了这些,我们就可以开始理解数据了。
-
回复了主题帖:
《深度学习的数学——使用Python语言》用于衡量变化的统计量
从深度学习的角度看,我们可能会使用标准差来描述训练集的特征。假设我们要训练和测试多个模型,由于深度网络在初始化时具有的随机性,我们可以对多个模型关于某指标(如准确率)求平均。在这种情况下,我们有可能除了输出准确率的均值之外,还会输出准确率的标准误。随差我们训练的模型越来越多,我们会更加相信准确率的均值,认为其能够更真实地反映这种模型架构真正所能达到的某种准确性,因而从指标上,我们预期这些模型的准确率的标准误会下降。
-
回复了主题帖:
《深度学习的数学——使用Python语言》用于衡量变化的统计量
什么时候该用标准差,什么时候该应用标准误:
使用标准差的目的是了解样本围绕均值的分布状况,而使用标准误的目的是衡量样本均值对总体均值的估计精度。从某种意义上说,标准误同时与两个概念有关。首先,标准误与中心极限定理有关,因为中心极限定理告诉我们,来自总体的多个样本集的均值将形成正态分布,而标准误能够控制正态分布的集中度,也就是精度。其次,标准误与大数定律有关,因为大数定律告诉我们,数据规模越大,样本均值越接近总体均值,标准误是对总体均值的更好估计。
-
回复了主题帖:
《深度学习的数学——使用Python语言》用于衡量变化的统计量
2、标准误和标准差
这里还有一个用于衡量变化的指标需要讨论——均值的标准误。让我们回对总体的理解,以便搞明白什么SE,以及如何使用SE。如果我们得到的数据集是来自总体的一个样本集,那么我们可以对这个样本集求样本均值。如果我们重复得到多个样本集,并且计算每一个样本集的样本均值,就会产生一个来自总体的样本均值的集合。这听起来很熟悉,因为这正我们在第3章阐述中心极限定理时使用的方法。在样本均值的集合计算标准差,得到的就是标准误。
标准误就是用样本量开根号对样本的标准差进行了缩放。
-
回复了主题帖:
《深度学习的数学——使用Python语言》用于衡量变化的统计量
1、离差和方差
衡量数据集变化的方式之一是找到极差,极差指的是数据集中最大值和最小值的差。但极差是一种粗粒度的衡量指标,因为它只用到数据集中的极值,而不关心其他数据值。另一种相对好一些的方式是计算数据值与均值距离的平均数,公式为:
公式中的MD称为平均离差。这是一种很自然的选择,完全符合我们的想法:我们想知道平均来看,每个样本距离均值多远。虽然平均离差在计算上没有什么问题,但我们很少在实践中运用它。其中一个原因与代数和微积分有关。计算离差用的绝对值在数学上会造诸多不便。
-
发表了主题帖:
《深度学习的数学——使用Python语言》用于衡量变化的统计量
有一个人初学射箭。他向靶心射出10支箭,其中8支中靶子,2支完全射偏,击中的8支箭均匀地分散在靶心的周围。另一个人(专业射手)也射出10支箭,全部击中靶子,并且每支箭都距离靶很近。考虑这两个人射中的平均位置。由于专业射手全部击中靶子且每支箭都在靶心附近,因此平增多下来,他的成绩接近靶心位置。初学者虽然没有命中一次靶心,但是他为他射的箭刚好几乎对称地分散在靶心四周,所以平均下来,他的成绩也在靶心附近。
然而,初学者射出的箭分散在靶心四周,它们的位变化很大。专业射手射出的箭则紧密地聚集在一起,它们的位置变化很小。对这种变化幅度进行量化是理解和描述数据集的一种有效方式,下面让我们看看具体如何才能做这一点。
- 2025-01-05
-
回复了主题帖:
ST-Link v2给使用SWD协议给STM32下载程序时怎么就不用手动换接BOOT0了
STM32官方的开发板都有原理图的,你可以看看官方提供的原理图。如果不是STM32的芯片,也可以找一下你对应芯片的开发板,对照一下您的设计图。
还有就是keil下面的debug设置里面,有连接复位什么的配置。
楼主如果能把你的原理图附上,可能找到原因容易一些。
- 2025-01-04
-
回复了主题帖:
免费申请: 树莓派Pico 2 RP2350开发板
这次由M0+升级到M33,内核升级了,性能应该可以提升不少吧。
- 2025-01-03
-
回复了主题帖:
【 AI挑战营(进阶)】1.思路梳理
大佬可以分享一些如何训练模型的知识。