问题标签 [stm32-hal]

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 投票
3 回答
6112 浏览

interrupt - 无法通过 UART 传输每个字符

我正在使用 stm32f0 MCU。

我想将从 uart 接收到的每个字节传输到 uart 之外。我正在对从 uart 接收到的每个字节启用中断。

我的代码很简单。

我的电脑将 ASCII 传输12345678到 stm32。如果一切正常,PC 应该会收到12345678回复。但是,PC1357改为接收。代码有什么问题?

0 投票
1 回答
23479 浏览

interrupt - 为什么在这种情况下 UART 发送中断不起作用?

我正在使用 stm32f0 MCU。

我有一个简单的 UART 回显代码,其中接收到的每个字节都将被发送出去。我测试了它是否有效。这里是;

即使它有效,我也对代码感到不舒服。首先,tx_timeout是 0,大多数代码示例都是非零的。我不知道副作用。其次,HAL_UART_Transmit()是阻塞调用,不建议在中断中使用阻塞调用。因此,我决定使用中断进行 uart 传输HAL_UART_Transmit_IT()而不是阻塞调用。这是修改后的代码;

但是,它没有按预期工作。我的电脑将 ASCII 12345678 传输到 stm32。如果一切正常,PC 应该会收到 12345678 回复。但是,PC 会收到 1357。这段代码有什么问题HAL_UART_Transmit_IT()

0 投票
1 回答
5368 浏览

timer - STM32 - 如何在某个 PWM ON 时间后触发中断?

我是 ARM MCU (STM32F411) 的新手,我一直在尝试使用 STM 的 HAL 库和 STM32Cube 来寻找外围设备。

我已经配置了我的电路板以使用一些外围设备:

  • 定时器 2用于以特定频率运行中断

  • 定时器 3用于在它的 3 个通道上运行 PWM。

  • 具有 4 个通道的ADC,进入 DMA 模式,用于读取一些模拟输入。

现在让我们假设 PWM 的整个周期为100 ms,其占空比为 50%(50 ms PWM 开启和50 ms PWM 关闭)。

我想在 PWM 开启一定时间后触发中断,让我们说 50%。

因此,我想在 25 ms 时运行一个中断,以便使用 ADC 对其模拟输入进行采样。

您对我如何实现这种中断有什么建议吗?

预先感谢您的帮助!

0 投票
3 回答
8609 浏览

interrupt - UART 接收线程在 STM32 HAL 库中启动后 UART 发送失败

我正在使用 STM32F1 (STM32F103C8T6) 来开发使用 FreeRTOS 的项目。

以下是我的GPIO和USART1接口配置:

问题是:为什么UART传输在线程启动之前工作,但在线程启动后或从线程开始?我想从线程传输数据。IE

我确保没有线程处于死锁状态。问题是 UART_HAL_Transmit 给出了 HAL_BUSY 状态。

此外,我有一个线程专门用于接收和解析来自 UART RX 的信息,我怀疑这可能是问题的原因。以下是代码:

我怀疑问题的另一个原因可能与系统中断有关(另请注意初始化部分,我配置了 NVIC):

对此问题的任何帮助或指导将不胜感激。提前致谢。

0 投票
1 回答
2612 浏览

interrupt - stm32 没有收到来自 UART 的 Rx 中断

我正在尝试在 stm32f4 发现板上(使用 freertos)为 UART 实现简单的回显。据我了解,这应该很容易。首先我调用HAL_UART_Receive_IT(&huart3, &rx_char,1)一个任务。并且在收到中断后USART3_IRQHandler应该触发。然后在HAL_UART_RxCpltCallback我会做HAL_UART_Transmit(&huart3, &rx_char, 1, timeout),也许重新启用它HAL_UART_Receive_IT。我的想法正确吗?它应该工作吗?

但就我而言,它没有。我正在尝试从终端发送一个字符,但从USART3_IRQHandler未被触发。什么都没发生。

该代码是使用带有 Freertos、USART3、NVIC 并启用了 USART3 全局中断的 Stm32CubeMX 生成的。

我也调用__HAL_UART_ENABLE_IT(&huart3, UART_IT_RXNE)主函数。怎么了?HAL_UART_Transmit完美运行。

0 投票
1 回答
1095 浏览

stm32 - STM32F1 HAL CAN2 未接收

我正在使用带有 STM32F107VCT6 控制器的定制板。该板的主要目的是连接两个 CAN 网络,进行一些计算并通过 SPI 将一些数据中继到另一个控制器,将一些数据中继到另一个 CAN 网络,反之亦然。

我的 CAN1 网络完全按照我希望的方式接收和传输;但是 CAN2 网络只能传输(因此不是硬件故障)

根据许多其他论坛的建议,复制代码后,将过滤器组更改为大于 14 的值;除了设置其他要求以更改为 CAN2 之外,它在中断或轮询模式下仍然无法接收。

我使用 STM32Cube MX 生成与 CAN1 相同的初始化代码,尽管在不同的总线上具有不同的中断优先级。

但是代码不起作用,就好像总线上没有消息一样。我正在使用 Microchip CAN 总线分析仪来发送和接收测试消息。

另一个细节:我仍然让 CAN1 运行,只是没有数据进入它;因此,它的所有时钟仍在运行。

这是我的测试代码:

主循环

非常感谢任何输入,干杯,汤姆

0 投票
1 回答
176 浏览

c - STM32 usart中断无法将正确的数据翻译成其他函数

当我使用 stm32 发现板向另一个发现板发送数据时遇到一些问题,它可以获取正确的数据并在回调函数中打印,但在其他函数中无法正确打印。

但我收到这样的错误数据

它应该是 0.012,并且在 HAL_UART_RxCpltCallback() 中是正确的,我在控制器中收到 -38.02、-0.009、0.512、0.012、-1.948 等等。我该怎么做才能防止这种情况发生?

0 投票
1 回答
877 浏览

c - ST Micro HAL, stm32f7xx_hal_crc.c 如何解决【警告】取消引用类型双关指针会破坏严格别名规则

在 STM32Cube_FW_F7_V1.3.0 和仍然在 STM32Cube_FW_F7_V1.11.0

使用 -Os 或 -O2 编译 stm32f7 HAL 库时收到以下警告。
注意:-O1 编译时没有警告。

警告是有道理的。该代码似乎可以正常工作。但是,我想将警告视为错误。

问题:如何在不破坏 crc 模块的情况下更改代码以删除警告?

注意:我在网上的任何地方都找不到解决方案。

这是导致警告的行之一

我相信这有点棘手和令人生畏,因为它正在处理硬件 crc 寄存器。

这是 ST Micro 的许可证,其中规定我在分发源代码时必须包含,它与问题无关

相关代码:

警告也出现在 16 位 CRC 函数中

0 投票
0 回答
102 浏览

stm32 - 如何将生成的 .bin 从处理器(我正在使用的 AM5728)加载到 STM32 板的内部闪存

我正在使用 stm32h 系列控制器,我想将生成的 .bin 文件加载到控制器的内部闪存形式处理器(AM5728)端。如果有人有任何想法,请告诉我。

0 投票
3 回答
7792 浏览

c - 使用 CubeMx 通过 USART 传输多个字符串

我正在尝试USART使用STM32F407VGT6 and CubeMX

我能够使用中断发送和接收数据。但是我遇到了一个我无法理解的问题:

HAL_UART_Transmit_IT用来发送数据。
我已启用__HAL_UART_ENABLE_IT(&huart3,UART_IT_TC);.

这是我的代码:

所以我正在发送这种数据。首先,我正在发送OK,然后我正在发送缓冲区数据,如您所见。

但是在终端(在我的情况下是tera term)我看不到缓冲区数据。
我可以看到OK

我不知道为什么会这样。以及如何解决?
有什么建议么?