问题标签 [stm32f7]
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.
keil - RTX Keil 和 ADC_DMA,未进入 GUI_thread
您好,我开始对 STM32F769I_Eval 进行编程。
我绝对是 Cortex M4 编程和使用 RTOS 的初学者。我使用基本示例开始。
现在我想使用带有 DMA 的 ADC 在 LCD 上显示当前值。我之前在一个没有 RTOS 的简单示例中尝试过这个,效果很好。
但是现在我建立了一个新项目,但显示仍然很暗。看来,使用 HAL_ADC_START_DMA(...) 后它挂起。如果我注释掉这一行,则 GUI 会显示在显示屏上。
如果有人可以帮助我,我会很高兴。我也非常感谢一些指南、书籍或类似的东西。
c - STM32F7 发现 - USB FS 主机/设备模式检测
STM32F723IEK6 探索板具有全速 USB 接口。我试图初始化它是徒劳的。从未从主机接收到复位信号,并且未设置适当的中断标志。
FS 接口是 OTG。它应该检测 VBUS 电压和 ID 引脚的状态,以确定它是作为主机连接还是作为设备连接。在设备模式下,VBUS 应由主机提供,ID 引脚应断开并拉高。当设备检测到连接时,它应该拉动 DP 引脚以指示与主机的连接。然后主机通过将数据线拉低来发送 RESET 信号。这就是理论。
看来板子没有拉高DP线。在启用 VBUS 检测的默认 OTG 配置(如下面的程序)中,只有 CIDSCHG(ID 更改)、SRQINT(会话)和 SOF 位在 GINTSTS 寄存器中被设置。CMOD 位为零,表示设备模式。ID 线似乎很低,即使没有连接电缆。
我在 AF 10 模式 (OTG FS) 中配置了相应的引脚(A9、A10、A11、A12)。但是,这可能是不必要的,因为 FS PHY 似乎直接连接到引脚,绕过了 GPIO 多路复用器(不确定)。
我尝试强制设备模式并禁用 VBUS 检测,但这没有任何效果,以及从 GPIO 拉起 ID 线。
我之前在 STM32F4 板上运行过相同的代码,但没有出现此类问题。
我想了解为什么连接检测不起作用。
代码如下,罗嗦了,有时钟,GPIO,USB初始化代码,一些辅助功能省略。
STM32F72x 参考手册(15MB!)http://www.st.com/resource/en/reference_manual/dm00305990.pdf
debugging - STM32 - 使用数据观察点和跟踪 (DWT) 的危险
查看在 STM32F7 上初始化数据观察点和跟踪 (DWT) 所需的代码:
特别是这一行来解锁对 DWT 寄存器的访问:
这类似于在扣动扳机之前切换安全锁扣。就像获得一些危险的行动一样。
同时,查看文档我没有发现使用 DWT 的任何阴暗面。所以
为什么这里需要这组显式的 0xC5ACCE55(与其他子系统不同)?有什么缺点吗?危险?还是真的需要这个安全扣?
PS 我正在使用 DWT 访问DWT->CYCCNT
以进行性能分析。
rtos - STM32F769 上的 LwIP
我正在尝试使用带有 RTOS 和 LwIP 的 STM32F769I-Discovery 板制作网络服务器。它应该返回一些简单的 html/image 文件。
这是我到目前为止的完整代码的链接:
https://github.com/xtrinch/stm32f7-demos/tree/master/05-rtos-lwip
请注意,它 90% 是从 STM32Cube_FW_F7_V1.7.0\Projects\STM32F769I-Discovery\Applications\LwIP\LwIP_HTTP_Server_Socket_RTOS 复制而来的。
50% 的时间,板子从 DHCP 获得 IP,50% 的时间,DHCP 请求超时。
当板确实从 DHCP 获得 IP 时,我可以 ping 它,但是当我尝试通过浏览器访问它时,它不会返回任何内容,并且 ping 在尝试后停止工作。
如果 IP 是使用 LwIP 静态分配的,我根本无法 ping 它。
我不知道从哪里开始。也许我的 RTOS 线程优先级有问题?我在 osPriorityHigh 上有 tcp/ip 线程,在 osPriorityBelowNormal 上有 DHCP 线程,在 osPriorityAboveNormal 上有 webserver 线程。
我的网络服务器线程成功地将自己绑定到端口 80,但如下:
永远不会被执行。
stm32 - 如何使用 STM32F7 从 ADC 获取数据
所以我想在我的 stm32f7 发现中从 adc3 中读出多个通道。我已经能够读出一个通道并设置多个通道,但我不知道如何读出每个通道。我想通过中断读出它们,所以我像这样设置 adc:
然后我有一个回调,它会在转换结束时去哪里,在这里我想读出数据,但我不知道如何读出每个通道。
谁能帮我读出来。我不想使用 DMA,因为它与 LCD 冲突。
embedded - STM32F7 发现 - LED 在哪里?
我正在我的STM32F7探索套件(带 STM32F746NGH6 微控制器)上学习 ARM 开发,并且我正在尝试在不使用高级库的情况下编写一个“闪烁”程序。
阅读文档,我无法弄清楚所有板载 LED 都连接到哪些 MCU 引脚?什么是正确的检查文件?
看着电路板,我可以看到一些 LED(LD1、LD2、...),但我怎样才能在程序中找到它们?我在头文件中看不到它们,如果它们是通过 GPIO 引脚控制的,我怎么知道哪些?
在用户手册中没有提到任何 LED,除了在电气原理图中(没有一个 LED 直接连接到 MCU afaik——它们主要用作硬接线板状态指示器)。
像这样的高级板是否可能没有单个通用 LED?
timer - 通过 stm32F746 获取 PWM 时无法调用 [HAL_TIM_IC_CaptureCallback]
我想使用 stm32F746G 获得 PWM 的 DutyCycle。我做了类似 hal PWMINPUT 示例的代码。现在程序无法进入 [HAL_TIM_IC_CaptureCallback] 函数。
/** * @brief 非阻塞模式下的输入捕获回调 * @param htim : TIM IC 句柄 * @retval None */
} }
embedded - STM32 SPI 接收 DMA 正在获取垃圾数据
在我的项目中,我使用 Master SPI 通信从外部 ADC 获取模拟数据。我的MCU是STM32F746ZGTX。我的系统需要实时工作,所以我使用了 SPI DMA 接收和发送功能。
我在不使用 DMA 的情况下通过 SPI 轮询正确读取所有外部 ADC 数据。在 SPI 轮询中,我首先将控制字节发送到外部 ADC,此时程序正在while(SPI_Ready)
循环等待,然后开始接收所有 ADC 数据。这种情况非常有效。
但我不想while(SPI_Ready)
在每次 ADC 读数中循环等待。因为它影响我的实时计算。这就是我将功能切换到 DMA 的原因。
我的新算法如下所示:
- 使用下降沿触发生成外部 GPIO 中断,以检测外部 ADC 的数据就绪输出。
- 将片选引脚设为低电平以开始与外部 ADC 通信
HAL_SPI_Transmit_DMA()
向具有功能的外部 ADC 发送读取命令。- 在
HAL_SPI_TxCpltCallback
函数中,触发HAL_SPI_Receive_DMA()
- 在
HAL_SPI_RxCpltCallback
功能上,缓冲接收到的 ADC 数据并使片选引脚为高电平以终止通信。
当我使用这个算法时,我的 ADC 缓冲区中总是得到 0xFF 值。似乎即使 ADC 没有发送原始数据,由于触发接收 DMA,我的 MCU 发送时钟并将所有逻辑高信号作为接收数据。
我在下面分享我的代码。如果您有任何建议我错了,请分享您的意见。
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 函数中
multicast - 在 STM32F7 + FreeRTOS 上实现 LWIP 多播?
我有一个客户端/服务器 LWIP 程序,它可以与单播通信正常工作,但是我想使用多播功能,所以我使用 IGMP 库执行了以下操作:
1- 在 lwipopts.h 中:
2- 在 ethernetif.c 中:
3-在我的源文件中(对于客户端和服务器项目):
实现了以下代码:
结果:所有提到的代码步骤都在两个项目(客户端和服务器)中成功执行,但我没有收到任何多播消息(甚至可能没有发送)!
我在回调函数中添加了一个“BREAK_POINT”,但我从未达到它。你能帮助我吗?通过提出解决方案或至少通过一种方法来跟踪问题......我正在使用带有 LWIP 的 STM32F746 Nucleo 板,由 cubeMX 生成的 FreeRTOS 库。
谢谢你。
<<< 编辑>>> 经过更多调查,我发现问题出在接收多播帧上,这应该在 MAC 初始化期间启用。虽然下面的代码对我不起作用,但对其他人有帮助,所以这里是:
4-在stm32f7xx_hal_eth.c(ETH_MACDMAConfig函数)中: