问题标签 [stm32f4discovery]
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.
eclipse - GDB 和 OpenOCD - 调试结束后重置或恢复
我正在使用 Eclipse + GDB 硬件调试 + OpenOCD + STM32F4DISCOVERY(通过 ST-LINK)
一切正常。
调试完成后,目标 CPU 仍处于 Halt 模式。如何使调试后(Terminate press)目标CPU复位或继续工作?
embedded - STM32F40x 芯片的 I2C 外设没有提供可用于固件的 r/w 位
我想知道是否有人找到了一种方法来确定主控与 stm32f40x 芯片通信的意图?从stm32f40x芯片上的固件来看,主控发送的ADDRess是不可用的,其中包含的r/w位(地址的第0位)也是不可用的。那么如何防止碰撞呢?有没有其他人处理过这个?如果是这样,您使用了哪些技术?我的暂定解决方案如下供参考。我延迟了对 DR 数据寄存器的任何写入,直到发生 TXE 中断。起初我认为这为时已晚,一个字节的垃圾会被淘汰,但它似乎正在工作。
accelerometer - STM32F4-发现SPI LIS3DSH
我能够使用下面的代码来初始化 SPI 并从加速度计读取值
然后我将这些代码与具有 500Hz 中断的项目结合起来。一开始它总是可以工作,但如果我拔下电路板然后再插入,SPI 只会读取零,即使 LIS3DSH 仍然有读数(我用示波器检查过)。我必须下载项目代码的较短版本(取出中断中的大部分代码)才能让 SPI 再次正常工作。我正在使用 Kickstart,大小有限的 IAR ewarm 我认为这是因为我的代码超出了限制。但我没有收到警告,我的代码不超过 32kb。
我只是很困惑,因为它在我拔掉它之前一直有效。有人可以给我一些建议吗?谢谢
fifo - STM32F4 HAL DMA UART 发送
我试图让 UART 传输在 stm32f405 上通过 DMA 工作。我的应用程序的这一部分旨在将文本字符串作为命令行界面发送出去。我有 UART 的 RX 部分与 DMA 一起工作(使用 1 字节循环 DMA 来处理任何进来的东西),但 TX 端被证明有点棘手。
我可以使用以下方法发送数据字符串:HAL_UART_Transmit_DMA(&handle, pData[], strlen(pData))
只要函数的连续调用之间存在延迟。一旦我的程序决定一个接一个地发送两个字符串,新的数据指针就会被忽略。
通过使用while(HAL_UART_Transmit_DMA(...) != HAL_OK){}
,我可以让程序等待所需的时间并发送连续的字符串。
这工作了一段时间(几十次传输),然后由于 HAL_NOT_OK 而卡住。
作为参考,我的 DMA 设置是:DMA2 stream 7
, channel 4
, mem to periph
, periph inc disabled
, mem inc enabled
, mem and periph align byte
, normal mode (not circular)
, low priority
, fifo disabled
.
UART 设置为9600 baud
, 8 bit word
, 1 stop bit
, no parity
, no hw control
, 16 oversampling
.
我试图弄清楚使用 FIFO 是否会帮助我,尽管我不完全确定我是否理解它。如果我想发送一个字节的数据,我可以用 FIFO 来做吗?这里有 1 个字的最小限制吗?
我已经设置了一个tx complete callback
我目前没有使用的。我确实想知道在此中断期间是否需要清除任何标志,但不确定..
任何帮助表示赞赏!
microcontroller - 在 Flash 中为用户数据分配内存(STM32F4 HAL)
我正在尝试使用 STM32F405 的内部闪存来存储一堆用户可设置的字节,这些字节在重启后仍然存在。
我在用着:
为我要存储的数据分配内存。
当程序启动时,我检查第一个字节是否设置为0x42
,如果没有,我使用以下方法设置它:
之后,我检查了价值,userConfig[0]
我看到了0x42
……太好了!
然而,当我点击重置并再次查看该位置时,它0x42
不再是......
知道我哪里出错了吗?我也试过:
但我得到相同的结果..
c - STM32F4 - 我可以在中断程序中使用延迟吗?
我正在为一个项目使用 STM32F4 发现板,我想知道我是否正确地解决了这个问题。当我按下一个按钮时,会触发一个运行例程的外部中断;不使用延迟,这部分工作正常。当例程移动伺服器然后将其返回到其原始位置时,会添加一个延迟以允许伺服器在返回到原始位置之前赶上新的 PWM 输出。当我延迟运行新的中断程序时,电路板锁定了。在调试中,代码似乎在延迟循环处停止。
延迟是一个简单的 systick 例程。把它放在我的中断中是不好的做法(因此是我崩溃的原因),我应该使用不同的方法吗?例如,在设置时间后返回伺服的外部中断程序中设置一个单次计时器?
谢谢!
arm - STM32F4xx 外设存储器映射
我注意到根据这些微控制器中的数据表和参考手册,GPIOG 是 128 字节(例如)。
0x4002 1800 - 0x4002 1BFF GPIOG(来自数据表)
我的问题是:为什么是 128 字节(1024 位)?所有 GPIOG 寄存器只占用 40 个字节。谢谢。
c - ARM 的 mikroC 在定义 char 变量时显示错误
我试图构建我的项目,但我得到了这个错误我真的不明白我试图以这种方式定义变量的问题:
甚至这样:
谢谢
algorithm - OCR 算法 (GOCR) 转 32F429IDISCOVERY 板
我正在尝试对 32F429IDISCOVERY 板实施 OCR 算法(特别是 GOCR 算法),但我仍然一无所获……我正在将 OV7670 相机中的 RGB565 格式的图像记录到板的 SDRAM 中,然后转换为灰度并传递给算法本身。从这个论坛和其他论坛上,我得到的印象是 GOCR 是非常好的算法,它似乎在 PC 上运行良好,但我无法让它在板上运行。有没有人有实施 OCR 或 GOCR 的经验?我不确定问题出在哪里,因为它以一种非常奇怪的方式发出声音。代码几乎每次都停在算法的不同部分......
调用 OCR 算法:
c - 32F429IDISCOVERY 板硬故障/默认处理程序
我正在尝试对 32F429IDISCOVERY 板实施 GOCR 算法。GOCR 本身在 PC 上运行良好,但在发现板上我仍然遇到一些问题,使其不稳定且无法使用。有时算法工作正常,一切顺利,结果很好,但有时处理器卡在硬故障/默认处理程序中。我不知道崩溃的原因是什么以及我应该做什么,但我相信堆栈/堆溢出了。下面我附上了一张图片,显示了崩溃前后处理器的状态: