问题标签 [stm32]

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 投票
1 回答
2865 浏览

c++ - Keil uVision4 armcc:使用 C++ 标准包括

我正在使用 Keil uVision4 在 STM32F2 设备上进行开发。我正在尝试使用 C++,这应该可以使用 uVision 工具链提供的 armcc(如果我错了,请纠正我)。但是uVision拒绝接受标准的C++包含方式

不工作,而

完美运行。当我在 uVision(右键单击,打开文档)中打开 cstdint 时,它会打开文件,但是作为通用文件,例如不是作为头文件,没有花哨的颜色。

我错过了什么?这两个文件都在同一个文件夹 C:\Keil\ARM\ARMCC\include 中,我是否强制编译器使用 c++(通过附加 --cpp)没有任何区别。uVision 只是无法接受没有结尾的文件作为头文件吗?

编辑:响应答案(感谢您的宝贵时间!):错误消息将是:

尽管

这表明了问题所在。谢谢您的帮助!

0 投票
1 回答
1208 浏览

arm - 将项目从 TrueSTUDIO 切换到 CrossWorks 时 memcpy 出现硬故障

我不幸被要求使用 CrossWorks 为 STM32F4 开发板进行开发,而我遇到了一个只有在使用 CrossWorks 构建和运行项目时才会出现的问题。

我正在使用 LwIP 创建一个 UDP 服务器,当我使用 TrueSTUDIO 时它工作得很好。但是,当我在 CrossWorks 下运行它时,ethernetif_input() 中出现了一个硬故障,它在数据包准备好读取时调用。它失败的具体点是它在数据包缓冲区之间移动数据包信息时调用 memcpy() 。

我不知道发生了什么变化——它是完全相同的代码,为相同的目标而构建,但它在 CrossWorks 中中断了。我希望有人能深入了解这个问题的任何部分……如果您对此有任何想法,那就太好了。

谢谢,如果您需要我的任何详细信息,请告诉我!

0 投票
3 回答
13514 浏览

c - 在 STM32 上用 C 语言生成纳秒延迟

我正在使用STM32F2控制器,并通过 8 位并行接口与ST7036 LCD 显示器连接。

数据表说地址保持和建立时间之间应该有 20 纳秒的延迟。

如何在 C 中生成 20 纳秒的延迟?

0 投票
1 回答
5564 浏览

eclipse - stm32f3 发现 gcc-arm eclipse

有人有 STM32 F3 探索板的工作开源环境吗?有没有人有可以轻松从STM32 F4/F0移植到F3发现的教程?

0 投票
1 回答
1515 浏览

stm32 - ARM (STM32) 上的 RTC 警报与系统警报

我正在学习stm32F4。有一些我无法真正理解的困惑。

RTC报警和原系统报警有什么区别。我只知道RTC可以节省更多电量,但没有别的。任何人都可以向我解释或举例说明差异。非常感谢。

0 投票
4 回答
23225 浏览

stm32 - 如何为 CAN 配置 STM32103 并将引脚重新映射到 PB8 和 PB9

在这个阶段,我试图简单地使用 STM32F103 V8T6 上的 CAN 发送传输。该芯片是在我公司定制的板上实现的。查看原理图,我看到 CAN Tx 和 Rx 引脚被重新映射到 PB9 (Tx) 和 PB8 (Rx)。话虽如此,我已经能够成功地使用 LoopBack 模式(使用 STM "V3.5.0" 的最新示例),但无法让 Normal 模式正常工作。如果有人在我的初始配置中发现明显缺陷,可以告诉我吗?!我只包含了与配置相关的代码,省略了传输函数调用。

这是我的传输功能

该资源很有帮助,但最终不足。

STM32F103微控制器CAN报文

谢谢!

丹尼尔

0 投票
1 回答
906 浏览

stm32 - STM32L + ENC28J60 (Olimex)

我在将 Olimex 的 ENC28J60-H 连接到我的 STM32L-Discovery 时遇到问题。所以我编写代码,读取一个 ECON1 寄存器,然后向其中写入一些值,然后再次读取它。这里有一个问题:当我在这段代码中的每一行一步一步地使用调试器(F10)时,一切都很顺利。但是当我在这行之后设置断点时,寄存器返回 0x00。我决定,ENC 只是没有足够的时间将值写入寄存器。但是手册说,它有自己的晶体振荡器,频率为 20 或 25 MHz(不记得确切)。我的频率约为 150 kHz。无论如何,我在每次 SPI 发送或接收后设置一个延迟(循环中的简单计数器)。这很有帮助。然后我继续。我写了一个初始化函数(软复位,而不是将需要的值写入寄存器),在主函数中使用它。调用后,我再次读取了一个 ECON1 寄存器。我得到的只是0x00,即使有延迟。有人知道在这种情况下该怎么办吗?

0 投票
1 回答
25835 浏览

c - Error: selected processor does not support ARM mode `wfi'

I'm getting the following errors while trying to compile an ARM embedded C program (I'm using YAGARTO as my cross compiler). I'm trying to work out what this error means and what are the steps to correct it. From the research I've done so far, the issue it seems to be wfi, and wfe are not ASM instruction. How could I fix this?

0 投票
5 回答
5749 浏览

timer - 暂时禁用定时器中断

我正在 stm32f4xx uC 上用 C 语言开发一个嵌入式项目。

我有一段代码连续执行循环操作 XYZ,有时 TIM4 中断会更改一些全局参数并导致操作 XYZ 重新启动。

代码是这样的:

XYZ 是一项复杂的操作,涉及在缓冲区和其他缓冲区之间传输数据。

TIM4 中断处理程序执行此操作:停止 XYZ 并更改一些影响 XYZ 操作的全局变量。

所以基本上我希望 XYZ 重复执行,TIM4 中断来停止 XYZ,更改参数,然后必须通过使用新的全局参数重新启动 XYZ 来重新启动循环。

问题是:由于 XYZ 有许多指令,TIM4 IRQ 可能会在它的中间出现,并且在 IRQHandler 更改全局变量之后,操作从 XYZ 的中间恢复,这会破坏程序。

我的初始解决方案:使用 __disable_irq() 禁用线路 A 上的中断,并使用 __enable_irq() 在线路 B 上恢复它们

失败,因为 XYZ 复杂操作必须使用其他中断(TIM4 除外)。

下一个解决方案仅禁用线路 A 上的 TIM4 中断:

并在 B 行重新启用它:

失败,因为我丢失了中断:当 int 恢复时,在 XYZ 期间到达的中断被忽略。这是一个大问题(其中一个原因是 TIM4 IRQHandler 更改了全局变量,然后再次激活 TIM4 以便稍后发出中断,我这样做是因为中断之间的周期不同)。

谁能给我一个解决这个问题的方法?有没有更好的方法来禁用/恢复 TIM4 IRQ 而不会丢失任何中断?

0 投票
1 回答
1086 浏览

atoi - STM32 atoi 和 strtol 有时会丢失前 2 位数字

我正在读取通过 RS485 发送的值,这是编码器的值我首先检查它是否返回了 E 字符(编码器报告错误),如果没有,则执行以下操作

缓冲区中的值为 4033536 并且位置设置为 33536 这不会在此函数中每次都发生,可能 1000 次中的 1 次,尽管我没有计算。如果失败,将程序计数器重新设置并再次执行该行会返回相同的结果,但再次启动调试器会导致值正确转换。

我正在使用 keil uvision 4,它是一个使用 stm32f103vet6 和 stm32f10 库 V2.0.1 的自定义板,这真的让我很难过,从来没有遇到过这样的事情,在得到任何帮助之前,我们将不胜感激。

谢谢