问题标签 [stm32f4]
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.
debouncing - stm32f4按钮按下时去抖动
我正在研究一个“准确”的按钮。我的意思是当我按下按钮时它不会去抖动。我可以通过仅使用软件来实现这一点吗?
我正在使用 STM32F4 MCU。
谢谢你们...
microcontroller - STM32F4 DMA 不控制 ADC 通道
我正在尝试设置我的 STM32F407-Discovery 板以使用 DMA 控制器从 ADC1 读取多个 ADC 通道。我可以在不使用 DMA 的情况下一次轻松地读取一个模拟值,但是一旦我为 ADC 启用 DMA,它就ADC1->DR
始终为 0,并adc_vals
用零填充。此外,它挂在while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));
.
编辑:它会出现DMA_GetCmdStatus
返回禁用。有任何想法吗?
有没有办法启动 ADC 或我缺少的东西?
interrupt - STM32F4 - 按钮 GPIO 输入不起作用
我正在使用 STM32F469 探索板,并且正在尝试让外部瞬时按钮工作。
它当前连接到 PG11,并且设置为比按下时将引脚连接到 MCU 提供的 +5V。在继续之前,我只想声明我在 stmf4xx_it.c 中使用以下代码来执行去抖动:
我在头文件 inout.h 中有以下代码:
然后在 inout.c 我有以下代码用于设置按钮 GPIO 引脚:
然后在我的 main.c 文件中,我有以下内容:
然后我使用下面的代码来检测按钮是否被按下并执行我需要的操作
现在每次我按下按钮时,EXTI15_10_IRQHandler
都会被红色 LED 亮起确认。
如果我一直按下按钮,很多很多次,HAL_GPIO_EXTI_Callback
最终将被黄色 LED 亮起称为确认。
如果我继续按下按钮更多次,那么最终SelectIsrCallback
会调用并执行我想要的操作,正如橙色和蓝色 LED 亮起所确认的那样。
为什么在第一次按下按钮时不会调用HAL_GPIO_EXTI_Callback
and ?SelectIsrCallback
为什么SelectIsrCallback
一旦HAL_GPIO_EXTI_Callback
被调用就不会被调用?
注意:我刚刚将YellowLedOn()
调用移到 if 语句之前,HAL_GPIO_EXTI_Callback
以查看是否是 if 语句的这个函数在调用之前需要大量按钮按下。它没有任何区别,所以问题在于HAL_GPIO_EXTI_Callback
函数的调用。
uart - STM32F4 DMA UART
我正在使用带有 DMA 的 STM32F401RE UART 来接收连续的数据流并通过 BLE 发送。我正在使用大小为 20 或 1023 字节的缓冲区。我面临的问题是 DMA 缓冲区完全中断在开始连续接收数据时停止工作。当我通过 PC COM 端口以非连续方式发送数据块(20 或 1023 字节)时,它工作得非常好。我正在尝试在调试器模式下工作,它适用于 PC COM 端口设置并在 DMA 回调函数中命中断点,但在数据流上没有。我检查数据流模块是否工作正常。
程序正在进入“HAL_UART_ErrorCallback”功能,我正在重新激活“HAL_UART_Receive_DMA”,但仍未解决问题。
请让我知道如何解决这个问题。
非常感谢。
亲切的问候,加利卜
c - STM32F4程序只有在按下复位按钮后才会运行
我最近购买了一块 NUCLEO-F446RE 板(STM32F4 产品),一个小问题一直困扰着我。我编写的所有代码都可以正常运行,但只有在按下 NUCLEO 板上的重置按钮后才能正常工作。
IDE:Keil v5
例如,我为闪烁的 LED 编写了代码:
在我运行并将代码下载到板上后,什么都不会发生。一旦我按下重置,LED 将按预期闪烁。
我相当肯定它没有包含在我的代码中,因为当我运行示例程序时,它会立即执行。
例如,KIEL 提供的闪烁 LED:
示例代码似乎没有任何特别之处可以使其立即运行。
任何帮助是极大的赞赏。
microcontroller - stm32f4 时钟配置不会启用 PWR 寄存器中的位
我最近购买了一块 NUCLEO-F446RE 板(STM32F4 产品),我在启用 PWR 寄存器中的位时遇到了重大问题。
我的目标是使用计时器使 LED 闪烁,并且我正在尝试将 HSI 时钟配置为 180 MHz 的最大系统频率。
我已按照参考手册中的说明设置为“T”。以下是说明的屏幕截图:参考手册的屏幕截图
IDE:Keil v5
该板正在运行最新的固件。
这是我的代码:
我还没有完成定时器的设置,所以我只是使用 CPU 浪费循环来闪烁 LED。
有 2 个问题(1 个次要问题和 1 个主要问题):
1.
当我执行上面的代码时,它陷入了无限循环。考虑到默认情况下启用该值,这并不是什么大问题。虽然我想知道为什么会这样。我一直在评论这个块来执行下面的代码块。
2.
上面的代码是最麻烦的。当我调试我的代码时,PWR_CR_ODEN 没有启用并最终陷入第二行的无限循环。我还尝试使用以下方法启用该位:
但它仍然卡在第二行代码上。
参考手册没有说明配置该寄存器的任何特殊之处。我完全迷失在这里。
奇怪的是,如果我完全省略了 2 块代码,程序将执行并闪烁 LED。但是,我想解决上面显示的问题并了解为什么会发生这种情况。
任何帮助是极大的赞赏。对不起,很长的帖子。
tcp - 如何将 lwIP tcp/ip 堆栈与微控制器 stm32f4(客户端)一起使用
核心:Cortex-M4
微控制器:stm32f407(stm32f4发现板)
IP 堆栈:lwIP 1.4.1
我正在使用这个微控制器来控制自动化,我想通过 HTTP 请求以以下形式将一些信息发送到单独的 Web 服务器:
http://192.168.1.3/api/xdevices.json?SetR=01
lwIP 有一个用于微处理器的 http 服务器,但我追求的是相反的(微控制器是客户端)。
我不确定我做错了什么,但是在 TCP_Connect 之后它总是转到 tcp_error 处理程序:
第一个功能是 tcp_new :
我的回调:
我的标题:
主功能 :
显然我忘记了一些我只是不知道它是什么的东西。(我正在使用 Keil arm)
谢谢你
stm32 - LIN 中断检测标志对 ARM STM32 设备意味着什么?
STM32F4xx 系列中有一个 UART 错误标志,即
Bit 8 LBD:LIN 中断检测标志
没有关于此的进一步信息。这对UART意味着什么?
stm32 - 如果数据寄存器中有字节,stm32 usart dma 接收未启动
在 STM32 系列上启用 UART DMA 接收有什么要求?根据我的观察,如果 uart 接收数据寄存器中有任何陈旧数据,它将阻止 dma 在启用时启动(我相信因为没有新数据会触发 dma 中断以清除该字节并正常继续)。
如果在中断上下文中并在设置 dmar 位后接收到数据(即启用 uart dma 接收),退出中断后 dma 会清除该位还是会锁定 dma?如果是这样,如何在启用 dma 和退出中断上下文之间防止这种竞争条件(注意所有中断的优先级相同,因此在当前中断中有效地禁用了中断)。
stm32f4 - st 链接实用程序无法保持与设备的连接
所以,我正在尝试使用 ST-Link 连接到自定义板。我的板子使用 STM32 微控制器,我使用 ST 链接实用软件来查看是否可以连接到它。
现在,如果我在实用软件上同时按下连接并在我的板上按下复位,则连接成功。但是,一旦我将手指从重置按钮上移开,与设备的连接就会丢失。这是预期的吗?以及如何在不按住重置按钮的情况下使其保持连接!
另外,假设我一直按下它,当我尝试擦除芯片时,实用软件会给我一个内部命令错误。当我尝试对芯片进行编程时也会发生这种情况。
任何建议表示赞赏。