问题标签 [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.

0 投票
1 回答
642 浏览

stm32 - 通过 USART 访问 STM32L4 引导加载程序:无 ACK

我正在尝试访问 Nucleo L476RG“从”板的引导加载程序。

“主”板是 Nucleo L496ZG 板。在我的程序中,我DigitalOut在主板上定义了一个名为extBoot0, extReset。这些连接到从板上的boot0和引脚。NRST此外,我有一个在主机上Serial调用的实例usart,它连接到从板上的 UART2。此外,似乎 BOOT1 已预设为运行引导加载程序,即它被断言为低电平并且不能更改为运行 SRAM 中的任何内容。

目前,在 中resetToBootloader,我将 BOOT0 设置为高电平并将 NRST 降至低电平 0.1 秒,然后将其恢复为高电平。我观察到运行此功能确实会重置设备并阻止程序运行。

initBootloader中,我按照 AN2606 格式化串行:8 位,偶校验,1 个停止位。然后我通过该串行总线将 0x7F 发送到从板。我没有得到任何响应并且使用逻辑分析仪,我已经确认从机将它放在正确的引脚上,并且从机的 TX 输入没有变化。启动引导加载程序还需要做什么?

这是我的相关代码:

如果它有帮助,这是我的电路板设置的图片

0 投票
2 回答
584 浏览

stm32 - NUCLEO-STM32F401RE 板上的 ADC 在输入信号超过 10kHz 时无法工作

使用连续转换 - DMA 绘制 60-80kHz编辑 1:使用连续转换的 10kHz 到 50kHz 输入信号的图像我在 NUCLEO-STM32F401RE 板上使用 ADC。我已经使用中断对 ADC 进行了编程,将大约 10,000 个值存储在一个数组中,并使用 .ini 文件读取它们。该代码在输入信号超过 10kHz 时不起作用。ADC 为 12 位分辨率,具有 3 个采样周期;ADC 时钟频率为 21Khz。下面是我的代码和 1-200Khz 正弦波输入频率范围的值图。输入电压为1.3V。我错过了什么?

输入频率范围为 1- 200Khz 的值图

0 投票
1 回答
505 浏览

c - STM32F207 Nucleo144板,写入永久内存

我目前正在研究 Nucleo f207zg。我想将其变量写入其永久存储器(EEPROM)。我怎样才能实现它?

我找不到相同的读取或写入功能。

0 投票
2 回答
12680 浏览

stm32 - STM32 虚拟串口有什么问题?我打不开

我有 Nucleo STM32H743ZI 板。我正在使用 CubeMX HAL(我尝试了几个版本)和 TrueStudio。Windows 10 中出现“虚拟 COM 端口”(我尝试了默认的 Windows 驱动程序和 ST 驱动程序),但我无法打开端口。当我尝试打开它时,我的 C# 程序写给我“参数不正确”:

同样的消息写给我程序 Realterm,PuTTY 什么也不做,“Tera Term”程序工作正常——我可以向我的 MCU 程序发送和接收数据。

有人知道它是什么吗?

在我的 C# 程序和终端程序中,我使用相同的参数

USB 设备查看器信息:

0 投票
1 回答
2907 浏览

stm32 - STM32H743ZI NUCLEO 144 和 LWIP - 无法 ping 板

希望一切顺利。我正在尝试使用 LWIP 中间件 ping STM32H743ZI NUCLEO 144。CubeMX 生成的代码。

  • 配置:

    1. 将 HCLK 设置为 400 MHz
    2. 启用 CPU ICache 和 DCache(在 Cortex_M7 配置下)
    3. 启用的 MPU(区域 0、区域 1 和区域 2)
    4. 启用 LWIP
    5. 选择 LAN8742 作为 Driver_PHY(在 LwIP>Platform Settings 下)
    6. DHCP 禁用(IP,掩码:255,255,255,000,网关:调制解调器 IP)
    7. 实时操作系统禁用
    8. LWIP_HTTPD、LWIP_HTTPD_CGI 已启用
    9. LWIP_HTTPD_SSI 已启用
    10. LWIP_HTTPD_MAX_TAG_NAME_LEN 设置为 16
    11. ICMP 已启用(LwIP 密钥选项>IPMP 选项中的 LWIP_BROADCAST_PING 和 LWIP_MULTICAST_PING)。
    12. 为 Keil V5 生成的代码
    13. MX_LWIP_Process 添加到 While 循环中的主函数。

      而(1)
      {

      MX_LWIP_Process();

      }

我不知道应该如何配置 CubeMX 或更改生成的代码才能 ping 我的板。

我的文件

0 投票
2 回答
785 浏览

c - 读取 GPIOB_IDR 寄存器时值不正确

我在 atollic true studio ide 上进行 stm32f030r8 arm 编程。

我从 idr 寄存器读取正确数据时遇到了一些问题。

我制作了 GPIOB(0,1,2,3) 的下拉 PUPR 寄存器。

GPIOB的其他引脚是我用MODER寄存器制作的输出。

当我每次读取 F 值时都在循环下读取 idr 数据但没有任何输入。

请帮我解决这个问题[您可以看到我在调试时读取的值[1]

没有任何输入 它必须读取 0x00

0 投票
2 回答
215 浏览

c++ - 如何通过带有UARTSerial类的USB在带有mbed的nucleo f446re之间发送字节数组?

我必须使用 UARTSerial 类在 nucleo f446re 和带有 ubuntu 的 pc 之间发送数据数组。

我在 mbed 上使用的代码如下:

我在电脑上运行的代码是:

我在电脑上收到的输出是:

如您所见,结果与我期望的不一样。

我已经尝试使用循环一次发送一个字节,但结果是一样的。

我不明白为什么我无法读取我试图在 pc 和 nucleo 板上刷新 USB 的 USB。

0 投票
1 回答
2118 浏览

c - STM32F404K8:HAL、ADC+DMA在第一次读取后卡住

我正在尝试从三个不同的通道读取 ADC 值(现在,稍后它将是 6 个通道,每个 ADC 上 3 个),我想在随机时间后访问我的 ADC 缓冲区并稍后使用 UART 发送它. 现在它们只是连接到+3.3V,中间有一个微调电位器,导致所有三个引脚上的电压不同,这意味着我应该能够经常读取ADC吗?无论如何,要做到这一点,我使用的是 STM32f303k8 板,我已经设置了要使用的 ADC1 通道 2,4 和 11。我使用 STM32CubeMX 生成代码,使用 HAL 库,在其中我将其配置为在循环模式下使用 DMA,使用连续转换和不同等级进行扫描转换。启动时(使用断点),我可以看到代码的 init 部分工作正常。ADC 初始化并启动 DMA,我什至用正确的值从 ADC1 将值输入我的缓冲区,通道 1 != 通道 2 != 通道 3。问题是当继续进行时,进程卡在无限循环处理程序中,并且永远不会到达我的 while(1) 那里我有一些任意语句。代码如下。

我一直在遵循不同的指南,看看我是否设置错了。其中之一是https://tunizem.blogspot.com/2014/09/using-adc-with-dma-on-stm32.html?showComment=1562660027777#c1229743050555367742。我尝试将采样时间从 1.5 一直更改为 601.5 个周期,还尝试将 EOCSelection 从单个更改为顺序。

我在“uint32_t stopwatch = HAL_GetTick();”处有一个断点 我可以看到 adcValue1 正在读取值。这些都是正确的,因为有 3.3V 进入所有三个,不同之处在于电位计设置为在通道 2 上输出 2.2V,即它低于其他两个。但这是我唯一一次可以看到正在阅读,因为在此之后它陷入了无限循环。

0 投票
0 回答
166 浏览

stm32 - 未提供输入时 GPIO 中断触发

我有几个 GPIO 引脚配置为输入和按钮。按钮的中断效果很好(我需要添加一些去抖动)。但有时当按下按钮时,或者如果我只是用手指触摸插头引脚,其他 gio 中断就会触发。

gio 引脚配置有下拉电阻并设置为在上升沿触发。

为简单起见,我删除了我正在使用的大部分 gio 引脚,只显示了一个,但我为输入配置了以下内容。

PA4、PA7、PA10、PB6、PB8、PB9

0 投票
0 回答
72 浏览

c++ - if 语句在 Nucleo64 上不起作用,但在 Maple mini 上起作用

我有一个适用于 Maple Mini 的代码,但我必须将硬件更改为 Nucleo F030r8,因为它有更多的 ADC,而且它非常糟糕。在modbus_update()函数中有一个大小的检查,inputBuffer只有当这个变量的值大于 0 时,下面的代码才应该运行。

但即使值inputBuffer恰好为0,它也会运行。奇怪的是,这段代码(使用不同的串口打开方式)在Maple Mini上完美运行。有谁知道可能是什么问题?

这是整个代码: