问题标签 [stm32f3]
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 - 如何使用 Nucleo-F303K8 每 1us 进行一次 adc 转换?
我使用的是 STM32 Cube IDE。我现在尝试的是在 TIM2 中启用 MSM,在通道 1 上启用 output_compare_no_output,然后选择“Reset”作为触发事件。然后我转到 ADC1 并启用 Regular_Conversion_Mode,将 Number_Of_Conversions 设置为 1,将 External_Trigger_Conversion_Source 设置为 Timer 2 Trigger Out 事件。之后,我在循环模式下设置了一个 DMA,将半字推送到 RAM 缓冲区。为了测试,我将定时器的频率设置得低很多(10Hz),并在 ConvHalfCoplt 和 ConvCoplt 完成回调中通过 UART 从缓冲区发送一些 ADC 读数。但目前它不起作用。你能想想我的方法有什么错误吗?
################################################# ############################ 老的: #################### ################################################# ########
到目前为止,我尝试将 TIM2 配置为每微秒重置一次并在中断回调中开始转换:
但据我所知 PollForConversion 可能需要一些时间。
创建一个缓冲区并使用 DMA 不断地将数据从 ADC 传输到缓冲区并每微秒从那里读取一个值会更好吗?我不会那样阅读“旧”数据吗?
rust - 如何从 stm32f30x 中的 cortex-m-rt 获取中断重新导出以运行
我想使用 rust 和 the cortex-m-rt
and crates 为 STM32F3Discovery 板编写一个程序stm32f30x
。更准确地说,我想实现一个我想使用该#[interrupt]
属性的外部中断。但是转出口似乎有问题。
cortex-m-rt 关于中断的文档说该#[interrupt]
属性不应直接使用,而应使用设备箱中的重新导出:
事实上,stm32f3x crate的文档显示 cortex-m-rt crate 中的这个属性被重新导出。但是,编译:
或者
给出错误
我不知道为什么会发生这种情况,因为我遵循的示例也是如此。我在 Cargo.toml 中的依赖项如下所示:
我很感激任何帮助:)
rust - 我的 EXTI0 中断处理程序没有被覆盖/工作正常(STM32F3Discovery)
我正在尝试学习嵌入式设备的编码并希望实现中断。为此,我编写了一个程序,其中主要功能只是一个循环,使一个 LED 闪烁,中断应该点亮另一个 LED,以测试一切是否正常。
我的代码如下所示:
我正在使用我自己为计时器编写的 f3discovery 模块和用于 LED 的另一个模块 (aux9)。当我运行程序时,第一个 LED 闪烁,直到按下导致中断的按钮。但是第二个 LED 永远不会亮起。删除 EXTI0 会产生相同的结果,这导致我认为处理程序没有被正确覆盖。
我很感激任何建议:)
c++ - 如何在按下并释放一次按钮时打开 LED,然后通过再次按下和释放将其关闭?
我试图通过按下并释放一次按钮来打开 LED,然后通过再次按下并释放它来关闭它,依此类推。我一起写了一堆代码,但我不确定听起来是否正确。我的意思是我不知道这是我的面包板还是连接松动,但不确定它是否按预期工作。我知道接线是正确的,只需在按下按钮时将其打开,然后通过释放按钮将其关闭即可。任何帮助深表感谢。谢谢你。
这是代码:
stm32 - 带地址标记检测的 STM32 UART 多处理器模式。预期的数据字节被解释为地址字节
我已将 UART 配置为通过 RS485 进行多处理器通信。我可以正确接收和传输数据。唤醒后(RWU=0)当接收到正确的地址后,后续字节应该正常接收,而不是解释为另一个地址是我的理解。但是,如果预期的数据字节包含一个“1”作为 MSB,则它被解释为一个地址。现在从文档中可以清楚地看出这是正确的行为,但是在接收到正确的地址后(RWU 设置为 0,RXNE 设置为 1,通过调试确认)我只能接收值小于定义地址的数据。例如,如果我将字长设置为 9 位,地址设置为 4,则正确的地址将是预期的 132(10000100)(我认为在这种情况下地址长度为 8 位,因为设置了 ADDM7)。但后续字节仍被解释为地址。发送 132,55,45,150(通过 RealTerm)只会收到 132,55,45,因为 132 是正确的地址,而 44,55 的 MSB 为“0”。150 被解释为新地址,因为 MSB 中的“1”和 RWU 再次设置为 1,因为它是不正确的地址,我无法再接收数据。
我的问题是,在我再次回去监听地址之前,如何将正确地址之后的后续字节解释为纯数据字节?如果我理解正确,RWU 和 RXNE 是由硬件在这种模式下设置的?或者我应该在 FW 中做些什么具体的事情?我的实现目前是基于中断的。我使用的MCU是F303K8。
我将附上一些图片、代码和文档以获取详细信息和清晰度。
谢谢!
代码和调试:
embedded - 为什么在尝试使用 openocd 连接 stlink-v2 时出现通信故障
我正在尝试使用 stlink-v2 连接到“stm32”“bluepill”以向其写入一些代码
每当我运行 openocd 时,它都无法连接我的 openocd.cfg 文件如下所示
当我运行 openocd 时,这是我收到的响应:
我以前在上面写了一些代码stm32f103
,bluepill
当我连接到我的电脑时,代码运行(它导致 pc13 上的 LED 闪烁)
上次运行良好时,我没有更改 openocd.cfg 文件
stm32 - 在不使用 Cube MX 库的情况下控制 STM32F3 GPIO
我正在将此用于STM32F373CC的引导加载程序改编为我的设备。为了表明设备已通电但处于引导加载程序模式,我想打开一些状态 LED。但是,此引导加载程序不使用 STM Cube MX 库,因此我必须对其进行低级编码。包含头文件stm32f373xc.h,所以我可以使用GPIOB_BASE之类的表达式。
我在 main() 中尝试了以下第一件事,但不幸的是它不起作用:
有什么我想念的想法吗?如何确定问题是端口 B 的时钟还是引脚配置?
我发现了这个类似的帖子,但是第一个答案需要整个 CMSIS,第二个答案没有评论,所以我不完全理解他们在做什么。
embedded - 向 SPI1->DR 作为主机发送数据时出现问题
我尝试使用 SPI 将数据从主机发送到从机,
我对此真的很陌生,我不知道我做错了什么
我不知道它是否与我的初始化配置或我对 spi 进程的理解有关。如果有人知道或可以指导我,因为我不知道出了什么问题。
rust - 为什么我的 LED(stm32f3-discovery board)在应用延迟后不发光?
我在申请延迟延迟时犯了什么错误吗?
这是我正在使用的代码,用于在延迟后闪烁 LED 3 和 4。
如果我不使用延迟部分,它工作正常
arm - STM32F3 在这种特殊情况下无法让 UART 工作
我无法在两个 STM32F3 Discovery 板之间进行非常简单的传输。让我解释一下我在做什么。
我将 Board-A 通过 i2c 连接到 LCD 20x4,Board-B 通过 i2c 连接到 Qrobot 3D 手势传感器,目标是捕捉 Board-B 的运动,闪烁同一板上的一些 LED 并通过UART (uart4) 到 BoardA。
问题是虽然debug显示传输发生了,但实际上Board-A并没有进入RxCpltCallback的回调中。在深入探讨该主题之前,让我向您展示代码:
这是 Board-A 的 Receive 回调。(此外,此问题已测试通过 Uart4 从另一个 F3 接收(F3 也通过 uart4 发送,但在 BushButton 的回调中))
这似乎工作正常,我认为问题不在这里。
让我们看一下 Board-B 的代码:这个程序必须在一个循环中检查一些代表手势的标志,当出现时闪烁一些 LED 并通过 huart 发送一个数字,这是一个非常简单的任务!
}
为了通过调试和断点进行测试,我仅为传输创建了一个单独的函数(还尝试了 HAL_UART_Transimit(&huart4, (uint8_t *)num, sizeof (uint32_t), HAL_MAX_DELAY)):
当我在板上尝试此代码时,传感器识别手势并闪烁正确的 LED,在调试中我可以清楚地看到我输入了 trasmit 的函数 sed() 但没有任何东西到达另一块板上。PS:连接两块板的每根电缆都工作正常,并且在正确的引脚上。
你怎么看呢?我无法摆脱这个问题!