问题标签 [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.
interrupt - 无法通过 UART 传输每个字符
我正在使用 stm32f0 MCU。
我想将从 uart 接收到的每个字节传输到 uart 之外。我正在对从 uart 接收到的每个字节启用中断。
我的代码很简单。
我的电脑将 ASCII 传输12345678
到 stm32。如果一切正常,PC 应该会收到12345678
回复。但是,PC1357
改为接收。代码有什么问题?
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()
?
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 对其模拟输入进行采样。
您对我如何实现这种中断有什么建议吗?
预先感谢您的帮助!
interrupt - UART 接收线程在 STM32 HAL 库中启动后 UART 发送失败
我正在使用 STM32F1 (STM32F103C8T6) 来开发使用 FreeRTOS 的项目。
以下是我的GPIO和USART1接口配置:
问题是:为什么UART传输在线程启动之前工作,但在线程启动后或从线程开始?我想从线程传输数据。IE
我确保没有线程处于死锁状态。问题是 UART_HAL_Transmit 给出了 HAL_BUSY 状态。
此外,我有一个线程专门用于接收和解析来自 UART RX 的信息,我怀疑这可能是问题的原因。以下是代码:
我怀疑问题的另一个原因可能与系统中断有关(另请注意初始化部分,我配置了 NVIC):
对此问题的任何帮助或指导将不胜感激。提前致谢。
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
完美运行。
stm32 - STM32F1 HAL CAN2 未接收
我正在使用带有 STM32F107VCT6 控制器的定制板。该板的主要目的是连接两个 CAN 网络,进行一些计算并通过 SPI 将一些数据中继到另一个控制器,将一些数据中继到另一个 CAN 网络,反之亦然。
我的 CAN1 网络完全按照我希望的方式接收和传输;但是 CAN2 网络只能传输(因此不是硬件故障)
根据许多其他论坛的建议,复制代码后,将过滤器组更改为大于 14 的值;除了设置其他要求以更改为 CAN2 之外,它在中断或轮询模式下仍然无法接收。
我使用 STM32Cube MX 生成与 CAN1 相同的初始化代码,尽管在不同的总线上具有不同的中断优先级。
但是代码不起作用,就好像总线上没有消息一样。我正在使用 Microchip CAN 总线分析仪来发送和接收测试消息。
另一个细节:我仍然让 CAN1 运行,只是没有数据进入它;因此,它的所有时钟仍在运行。
这是我的测试代码:
主循环
非常感谢任何输入,干杯,汤姆
c - STM32 usart中断无法将正确的数据翻译成其他函数
当我使用 stm32 发现板向另一个发现板发送数据时遇到一些问题,它可以获取正确的数据并在回调函数中打印,但在其他函数中无法正确打印。
但我收到这样的错误数据
它应该是 0.012,并且在 HAL_UART_RxCpltCallback() 中是正确的,我在控制器中收到 -38.02、-0.009、0.512、0.012、-1.948 等等。我该怎么做才能防止这种情况发生?
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 函数中
stm32 - 如何将生成的 .bin 从处理器(我正在使用的 AM5728)加载到 STM32 板的内部闪存
我正在使用 stm32h 系列控制器,我想将生成的 .bin 文件加载到控制器的内部闪存形式处理器(AM5728)端。如果有人有任何想法,请告诉我。
c - 使用 CubeMx 通过 USART 传输多个字符串
我正在尝试USART
使用STM32F407VGT6
and CubeMX
。
我能够使用中断发送和接收数据。但是我遇到了一个我无法理解的问题:
我HAL_UART_Transmit_IT
用来发送数据。
我已启用__HAL_UART_ENABLE_IT(&huart3,UART_IT_TC);
.
这是我的代码:
所以我正在发送这种数据。首先,我正在发送OK
,然后我正在发送缓冲区数据,如您所见。
但是在终端(在我的情况下是tera term)我看不到缓冲区数据。
我可以看到OK
。
我不知道为什么会这样。以及如何解决?
有什么建议么?