问题标签 [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.
stm32 - 错误:偏移超出范围,在 CoIDE 中
我正在尝试使用 CooCox CoIDE 为 STM32F100 开发软件。
添加 CooCox RTOS (CoOS) 后编译时,我收到一条错误消息:
我知道这不是很多信息,但我以前没有见过这个错误,所以我完全空白,请帮助:)
编辑:哦,我发现如果我将优化从 -O0 更改为 -O1 错误变为:
eclipse - Eclipse:无法运行程序“cs-make”:启动失败
在过去的一周里,我一直在寻找一个免费的 STM32F1xx 开发环境,它由 FreeRTOS 支持。而且还没有成功:(。
现在我发现了这个: http: //www.stf12.org/developers/ODeV.html
它是用于 STM32 编译和调试的 Eclipse 配置,还有一个 FreeRTOS 演示。完美的!
于是我下载了一个预配置的eclipse版本,并尝试编译一个demo项目得到这个错误:
沉闷。请帮忙,我在配置 IDE、编译器和链接器方面非常糟糕,所以这必须对新手友好:)
eclipse - 使用 OpenOCD 调试 STM32F1xx 探索板(ST-Link)
我在让 OpenOCD 与我的 STM32F100RB 探索板(它使用 ST-Link)进行通信时遇到了一些问题。
我不习惯使用开源工具,因此我从来没有遇到过编程和调试嵌入式平台的问题。在过去的一周里,我遇到的问题比我想象的要多,只是试图让 IDE + FreeRTOS + Debugging 启动并运行。
我现在决定为我的嵌入式应用程序使用 Eclipse + Sourcery G++ Lite + OpenOCD。我编译了一个小应用程序(好的开始......),现在正在尝试使用 OpenOCD 进行编程和调试。当我这样做时,我收到以下错误:
我不知道从哪里开始,请帮助。另外:如果有人有更好的 STM32 开源/免费 IDE,它“支持”FreeRTOS(即有可用的演示/模板),我会很高兴听到它 :)
编辑:
好的,我认为我在第一次尝试时使用了错误的配置文件。现在我得到了这个:
memory - 为 FreeRTOS 嵌入式系统选择合适的 MCU
我有一个项目正在进行,我打算将 STM32 MCU 与一堆传感器(加速度计、陀螺仪等)连接起来,对下载的传感器数据进行一些数学运算,并为 6 个 PWM 生成适当的输出。除此之外,我还有一个有源无线通信模块,也许还有一个小液晶屏(没什么花哨的)。加上一些小的附加功能。
我打算使用 FreeRTOS 来控制系统,但我无法确定这是否是矫枉过正?我应该只使用小型合作调度程序吗?
我已经在我的 STM32F100RB 上启动并运行了一个 FreeRTOS 系统,它具有 8kB RAM 和 128kB 闪存,但我无法确定对于运行 FreeRTOS 的系统来说这是否足够内存?..
c++ - cortex m3, stm32L1XX 位带
我正在按照 micromouseonline 提供的指南进行操作。com/2010/07/14/bit-banding-in-the-stm32 。我正在使用IAR EWARM
和Cortex M3
。一切正常,但我无法在给定地址中设置位。我正在使用STM32L151xD
和IAR EWARM
编译器。
这就是他们定义功能的方式
电话是:
但是,如果我看到使用调试器,标志中的第 1 位始终为 0。标志最初假定为 0。因此,标志中的所有位都将为 0。但是,当我使用 varSetBit(flags,1) 时,第 1 位的答案再次为 0。我不认为我做错了什么。是编译器的问题吗?我错过了一些设置吗?任何帮助将不胜感激。
c - FreeRTOS - STM32F4 上的堆栈损坏
我目前遇到问题,我认为在 STM32F407 目标上运行 FreeRTOS 时某些配置错误的堆栈损坏。
我用 gcc 查看了 STM32F4 上的 FreeRTOS 堆栈损坏,但没有得到任何帮助。
应用程序运行两个任务并依赖于一个 CAN 中断。工作流程如下:
- 两个任务 network_task 和 app_task 与两个队列 raw_msg_queue 和 app_msg_queue 一起创建。CAN 中断也已设置。
- network_task 具有最高优先级,并开始无限期地等待 raw_msg_queue。
- app_task 是下一个并开始在 app_msg_queue 上等待。
- 然后 CAN 中断因外部事件而触发,将 CAN 消息添加到 raw_msg_queue。
- network_task 唤醒,处理消息,将处理后的消息添加到 app_msg_queue,然后继续等待 raw_msg_queue。
- app_task 唤醒,我遇到了一个硬故障。
问题是,由于最终用户的便利性和可移植性,我已经分两步包装了 app_task 对 xQueueReceive 的调用。app_task总的函数链是它调用network_receive(..) -> os_queue_receive(..) -> xQueueReceive(..)。这很好用,但是当它从 xQueueReceive(..) 返回时,它只能在返回到看似随机的内存位置之前返回到 os_queue_receive(..) 并且我得到一个硬故障。
堆栈大小应该足够,并且两者都设置为 2048,所有大型数据结构都作为指针传递。
我在两个 STM32F407 上运行我的代码。FreeRTOS 的版本为 7.4.2,是撰写本文时的最新版本。
我真的希望有人可以在这里帮助我!
c++ - 无法让 RTC 工作
我正在尝试创建一个简单的程序来读取 RTC 时钟值并将其打印到串行监视器。USART 工作正常,但我不知道 RTC 有什么问题。它一直给我在 setuRTC() 中设置的相同值。第二个中断也不起作用。编辑:我用的是STM32f1开发板,和这个一样
这是我的 RTC 设置:
这是整个程序:
memory - stm32f4 内存跳转
我正在使用 stm32f4 探索板,我试图跳转到闪存的一部分,在那里我将开始执行另一个程序。变量ApplicationAddress
是 0x08008000。当我的代码到达此部分时,PC 会转到 0x0000000 并且系统会死机。我不确定到底发生了什么。感谢您的时间。我的跳转代码如下所示。
c++ - 基于硬件寄存器的非类型模板参数
我正在使用 STM32 的硬件计时器与许多光学编码器连接。我想创建一个模板化类,它为与硬件计时器交互提供了一个方便的接口。定时器寄存器是存储器映射的,它们的地址在制造商提供的与器件数据表相匹配的标头中定义。模板参数实际上是定时器外设的基本内存地址。下面是我目前正在尝试做的一个最小的工作示例:
但是,当我编译时,我使用 g++-4.7.2 -std=c++11 得到这些错误:
错误| 无法将模板参数“1073742848u”转换为“timer_peripheral*”</p>
错误| 't' 不是有效的模板参数,因为 't' 是一个变量,而不是变量的地址
在阅读了有关非类型模板参数的信息后,我仍然不确定如何解决我的问题以及是否可以按照我的想法使用模板。我在选项 1 中尝试了 static_cast 和 reinterpret_cast,但似乎没有任何区别。
assembly - 如何在 STM32L152 上配置 GPIO 引脚?
我有一个 STM32L 发现板,其中包含一个 stm32l152rb 微处理器。我尝试在没有任何库的情况下在汇编中对该板进行编程。到目前为止,我成功地编写了链接器脚本和一个将 .data 部分复制到 RAM 并将 bss 部分清零的基本例程。但除此之外,我有点失落。
作为一个了解如何配置 GPIO 工作原理的小型实验,我想为板子制作一个程序,点亮连接到 GPIO 端口 B 引脚 7 的绿色 LED。阅读数据表,我得出结论,我需要做以下两件事:
- 将 GPIO 端口 B,引脚 7 配置为输出引脚
- 将所述引脚设置为高
但在这个地方,我比喻只见树木不见森林。我不确定我应该选择多种 IO 模式中的哪一种,所有这些首字母缩略词都让我感到困惑。我真的很感谢有人给我详细的信息、说明和可能的示例组装如何做到这一点。