问题标签 [nucleo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - mbed:使用 USBDevice 库编译会导致错误
我一直在尝试为我的 STM32 Nucleo F303K8 编译一个简单的 USB 键盘示例(我一直在关注https://os.mbed.com/handbook/USBKeyboard和https://www.hackerspace- ntnu.no/wiki/tutorials/mbed/mbed-keyboard-en/)
基本上我的全部main.cpp
是:
但是在编译时,我被告知
该特定错误是从我在https://os.mbed.com/compiler上的项目中复制的——我还尝试从 VSCode 中的本地项目构建(使用 PlatformIO 插件),但我遇到了同样的问题。如果没有 mbed 的 USBDevice 库,我可以从两个 IDE 中正常编译。
有谁知道为什么会发生这种情况?我需要导入其他东西吗?
c - 如何制作CAN协议的传输代码
我正在使用 NUCLEO-F103RB 板和 SN65HVD230 CAN 收发器。CAN 模式为 CAN_MODE_LOOPBACK。工作区是keil uvision(IDE),STM32 ST-LINK(调试器?)。
我有我老师给我的示例代码。这是 STMICRO 的示例代码。但是我真的不知道怎么用。。
首先,我知道如何设置stdId, DLC, DATA[0]~[7] 是这样的。
据我所知,下一步是制作传输代码。但是如何制作传输代码?
- 像这样使用
can_tx(argument...)
? - 设置关于 CAN 协议的寄存器(但我的老师说没有更改寄存器或中断。)
另外,我认为这是传输功能,也许....
内部参数->()
c - 用STM32F3读取非常规ADC
我正在尝试将 STM32F303 Nucleo 与 AD7748-4 ADC 连接。ADC 数据表:
https://www.analog.com/media/en/technical-documentation/data-sheets/ad7768-7768-4.pdf
问题是,ADC 不通过 SPI 端口输出转换后的值,而是采用数据就绪信号 (DRDY)、数据时钟 (DCLK) 和 4 个数据输出 (DOUT0-DOUT3) 的组合。如果我这样设置,输出会通过一根线串行传输 96 位,但时序在我的应用程序中至关重要,我需要使用 DOUT0 到 DOUT2 对数据进行计时,每个输出 32 位。如果我正在串行传输数据,我可以欺骗 SPI 端口读取它,但我不是。ADC 以 20MHz 运行,因此 DCLK 将以相同频率运行。Nucleo 的最高运行频率为 72MHz,但是当使用 DAM 时,它将时钟设置为 64MHz。
在STM手册中,将“GPIO端口输入数据寄存器(GPIOx_IDR)(x = A..H)”描述为只读寄存器 - 我的理解是低16位可以存储最多16位的输入值(最有可能用于内存数据 R/W) - 所以问题是,如何配置 GPIO 以读取数据?我在这里有点僵局。我的直觉告诉我,Nucleo 可能不够快,无法读取来自 ADC 的数据……有什么想法吗?全部都是用 C/C++ 编写的,基本上是裸机......我是 Nucleo 的新手,已经 4 年没有写过代码了 - 请原谅任何知识上的失误......
http - mbed:建立网络连接后访问 SD 卡时出现 HardFault 错误
我想结合一个 HTTP-Client 和一个 SD-Card-Reader。我的目标是从服务器下载文件并将该文件保存在 SD 卡上。不幸的是,由于硬故障 0x80FF013D,我卡在了路上。
我已经分解了代码并总结了一下:
- 网络通信(GET-command)单独工作正常
- SD 卡访问(读取和写入)单独工作正常
- 在建立网络连接之前,SD 卡访问工作正常
- 建立网络连接后访问 SD 卡时发生硬故障
核心信息:
- 操作系统:MBED OS5
- IDE:MBED CLI v1.8.2
- MC:NUCLEO-F746ZG
- SD 卡读卡器:带有 Transcend 2GB microSD(FAT 格式)的 CATALEX MicroSD 卡适配器
图书馆:
- mbed-os https://github.com/ARMmbed/mbed-os/#e1bea44212b8275f7d8ce7253e758c2e25c57482
- sd-driver https://github.com/ARMmbed/sd-driver/#a8c85d30af86a7431d85dee02d133d60dd386406
带硬故障的串行输出:
[NWKH] 正在连接网络...
[NWKH] 已连接到网络
[NWKH] IP 地址:192.168.188.29
测试 SD-Card++ MbedOS 故障处理程序 ++
故障类型:硬故障
Context:
R0 : 20000400
R1 : BFF39B82
R2 : 08025B6A
R3 : 00000003
R4 : 00000000
R5 : 2000FA34
R6 : 84551677
R7 : 7FFFFC00
R8 : 00000003
R9 : 08025B6A
R10 : 2000FA34
R11 : 00000000
R12 : 08013E6D
SP : 2000F9F8
LR : 0801A8E7
PC : A0000000
xPSR:210B0000
PSP:2000F990
MSP:2004FFC0
CPUID:410FC271
HFSR:
40000000 MMFSR:00000001
BFSR:00000000
UFSR:00000000
DFSR: 000000000 AFSR 模式
:000000000
Priv:特权
堆栈:PSP-- MbedOS 故障处理程序 --
++ MbedOS 错误信息 ++
错误状态:0x80FF013D 代码:317 模块:255
错误消息:故障异常
位置:0x8012A7B
错误值:0xA0000000
当前线程:Id:0x2000DA34 条目:0x8012BEB StackSize:0x2000 StackMem:0x2000DA78 SP:0x2004
更多信息,请访问:https
://armmbed.github.io/mbedos-error/?error= 0x80FF013D -- MbedOS 错误信息 --
并从 sd 卡文件系统示例https://os.mbed.com/cookbook/SD-Card-File-System添加了一些内容
主http.cpp
mbed_app.json
我已经阅读了“分析 Mbed OS 崩溃转储”的教程 -> https://os.mbed.com/docs/v5.8/tutorials/analyzing-mbed-os-crash-dump.html,
但我仍然不知道我能做什么,找出硬故障的原因。
- 错误状态:“0x80FF013D”表示“硬故障异常”
- HFSR:40000000 表示“强制硬故障”
- MMFSR:00000001 表示“处理器尝试从不允许执行的位置获取指令。”
- UFSR:00000000 表示“一切都很好”
- BFSR:00000000 表示“一切都很好”
我会很感激一些帮助。提前致谢。
python - STM32 - 无法从pyserial打开串口,但可以从ST-Link
我正在使用 STM32 (NUCLEO-L476RG) - 通过 Workbench 上传代码,有时使用 ST-Link Utility 连接到它。另外,我有一些通过串口监听 STM 的 python 代码。
直到昨天一切正常,但今天(不改变连接到 STM、驱动程序等的任何东西)pyserial 无法连接到设备,显示消息:
File "C:\python37\lib\site-packages\serial\serialwin32.py", line 62, in open raise SerialException("could not open port {!r}: {!r}".format(self.portstr, ctypes.WinError()))
serial.serialutil.SerialException: could not open port 'COM7': FileNotFoundError(2, 'Nie można odnaleźć określonego pliku.', None, 2)
我可以使用 Workbench 上传代码或通过 ST-Link Utility 连接到 STM,没有任何问题。端口不被任何其他应用程序使用。
当我列出端口时,serial.tools.list_ports.comports()
它正确显示为STMicroelectronics STLink Virtual COM Port (COM7)
.
在“设备管理器”中,COM 旁边有一个黄色三角形,但我不确定它是否更早(可能是)——它表示设备驱动程序未签名。
我尝试过了:
- 将驱动程序重新安装到STM提供的这些
- 重新安装pyserial
- 使用较旧的 python
- 使用较旧的 pyserial
- 将 COM 更改为另一个
- 将电缆换成新的
- 将设备连接到所有可能的 USB 端口
但这一切都改变了一切。
我的设置:
- Windows 7的
- 蟒蛇 3.7.1
- pyserial 3.4
- STM 32 核-L476RG
- STM32 和 ST-Link 实用程序的系统工作台,运行良好
这个设置工作了半年(!),在过去的几天里我没有改变任何与之相关的东西。我昨天做的唯一一件事就是安装 PostgreSQL,但它可能会导致我目前的问题似乎非常令人难以置信......
提前感谢您的帮助 - 我真的不知道接下来应该尝试什么,所以我很感激任何建议。
arduino - 让 Arduino GSM 库与 Nucleo L073RZ 一起使用时出现问题
我正在尝试将Adafruit Fona Mini GSM与Nucleo L073RZ一起使用。GSM 模块存在一个库,但它适用于 arduino。我已设置板管理器 url 以使用此存储库中的链接:https ://github.com/stm32duino/Arduino_Core_STM32/blob/master/README.md以添加对我正在使用的 MCU 的支持。
似乎无法将 SoftwareSerial 与此 MCU 一起使用。选择卡片后,图书馆就会消失。GSM 库通过取消注释某些行来支持 HardwareSerial,我已经这样做了。不幸的是,MCU 无法与 GSM 模块通信。
Tera 术语图像
这就是一切的联系方式。
硬件映像
如果图片不明显,这就是 GSM 模块连接到 MCU 的方式。
Vio 连接到 5V GND 连接到 GND RX 连接到 TX/D1 TX 连接到 RX/D0
这是我在 FONATest 示例中所做的唯一代码修改,只是为了使用硬件串行而不是软件串行。
c++ - Mbed CAN 网络只能获取一半的数据
我正在创建一个软件,它必须在具有 CAN 网络的单元中请求数据。出于某种原因,我只在被要求时获得了一部分正在发送的数据。如代码所示,该单元的 CAN 频率为 100 kbit 或 100000 位。我正在使用 Nucleo-F767ZI 并连接到 CAN 网络,我正在使用板的内置功能。
我已经查看了正在发送的数据是否存在故障,但这似乎很好,因为不同的程序能够毫无故障地读取它。我目前用来测试的代码就是这个位。
bluetooth-lowenergy - 在 FreeRTOS 上处理 BLE 用户事件
我在带有 BlueNRG 防护罩的 ST Nucleo 板上运行 FreeRTOS。BLE 堆栈的初始化工作,设备自己做广告,我可以建立连接。我的问题是,一旦用户事件到达(例如服务发现),程序就会以hardfault_handler()
.
我的 RTOS 上运行了 3 个任务,其中一个应该是处理用户事件的专用 BLE 任务。
这取自 ST 示例代码。如果我要么
- 只需运行这一项任务或
- 赋予 BLE 任务更高的优先级
两种解决方案都具有相同的结果 - 并且不再具有多任务系统。我不知道是否必须调整示例代码以在多任务系统中运行,或者我是否必须运行 BLE 进程中断驱动,但如果是,我将如何做到这一点以及如何详细说明导致hardfault
?
我试图user_evt_handler
用 a包围我,vTaskSuspendAll/xTaskResumeAll
但这并没有改变任何东西。
c++ - c++ 类中的链接事件
我正忙于定制电机控制器的固件。对于原型设计,我使用带有 mbed os 的 nucleo L432。
与主控制器的通信通过 CAN 总线进行组织。当收到数据时,我会有一个中断例程。这段代码放在主文件中时效果很好,但我想在单独的类中实现这段代码。但是,当我尝试编译此解决方案时,我不断收到来自编译器的以下错误:错误:获取“Lib/CANimp.cpp”中成员函数地址的非标准形式,行:19,列:18
有人对此有解决方案吗?
stm32 - 为什么在使用 STM32 USART2 Tx 时出现帧错误?
我正在关注本教程,了解如何在 STM32 板上使用 USART 端口。
https://www.youtube.com/watch?v=d6MZHdgCQx0
本教程说要执行以下操作:
- 清除所有引脚
- 选择您的 USART 引脚 Tx 和 Rx
然后进行下面的设置。
我遇到的问题是当我在我的 PC 上接收串行数据时,我的终端程序说它出现帧错误并且所有数据都搞砸了。
这是我用来发送的代码:
我检查了波特率都设置为9600。
我不知道我做错了什么。
我使用的电路板与他在视频中使用的电路板略有不同:我的是 NUCLEO-L031K6
编辑
逻辑分析仪输出:
我已将其插入逻辑分析仪,似乎可以检查。
关于为什么它会在终端程序中显示垃圾的任何线索?