问题标签 [bluepill]
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.
arm - 在错误的内存映射地址处闪烁 STM32f103c8t6
我用以下 OpenOCD 命令闪现了我的蓝色药丸板,然后我的 OpenOCD 不再连接到我的板。我的 boot0 和 boot1 引脚接地。
flash write_image 擦除 blinkled.hex
我忘了在命令末尾指定典型的初始化内存映射 0x08000000。刚刚发生了什么?
由于这个错误,我的 OpenOCD 只有在 boot0 为 1 且 boot1 为 0 时才与板子连接。有人知道如何解决这个问题吗?顺便说一句,我正在使用 Linux。
openocd - Openocd 错误:命令名称“dap”无效 - 无法通过 ST-Link/V2 连接 Blue Pill
我正在通过像这样的克隆 ST-Link/V2 使用 Blue Pill 板(根据 st-info --probe 具有 128kB 闪存的 STM32F103CB)。我还使用像这样的正版 ST-Link/V2 进行了测试。我得到了与两个程序员相同的结果,如下所述。
我的系统是 Linux (Debian LXDE),我在这里安装了 Liviu Ionescu 发布的 OpenOCD 。
我的 OpenOCD 安装工作正常。除了 Blue Pill,我还有一个 ST-Nucleo-F103RB 板,我可以使用 OpenOCD 连接到它。命令
使用 OpenOCD 附带的标准 .cfg 文件给出
但是我仍然没有设法使用 ST-Link/V2 编程器连接到我的 Blue Pill。我已经阅读了我能找到的所有内容,包括https://elinux.org/Category:OpenOCD的相关部分以及我个人能消化的http://openocd.org/doc/的内容。以下是我必须要去的地方。
.cfg 文件 stm32f103c8_blue_pill.cfg 对我不起作用。它产生如下所述的输出。
根据我读到的内容,我在 ../board/stm32f103.cfg 准备了我自己的 .cfg 文件。它说:
我读过的资料表明这应该有效,但事实并非如此。使用我上面描述的 .cfg,我可以使用 target/stm32f1x.cfg 或 board/stm32f103c7_blue_pill.cfg,我仍然得到如下所述的相同输出。(对于这两个 .cfg 文件,我使用的是标准文件,与 OpenOCD 一起提供。)我已经使用上面显示的两个 reset_config 变体进行了测试,但都没有。这些组合都不起作用。
我正在使用的文件 interface/stlink.cfg 已修改。我已将其更改为声明正确的 device_desc "ST-LINK/V2" 和正确的 vid_pid 0x0483 0x3748。(两者都使用 lsusb 确认。)因此,忽略注释行,stlink.cfg 读取
我已经尝试过包含程序员的 hla_serial 。有趣的是,lsusb 找不到完整的序列号。st-info --probe 查找序列号,但给出的编号与 STLinkUpgrade 固件应用程序略有不同。我试过使用两个序列号。没有不同。
这是我给 OpenOCD 的命令:
请注意,我必须为此命令使用 -s 设置路径。使用 ST-Nucleo-F103RB 板,我不必这样做。但是,使用 stm32f103.cfg 文件,如果我不设置路径,我会得到:
如果我使用上面显示的完整命令,使用 -s 设置路径,我会得到:
这是 stm32f1x.cfg 的违规行 47:
我在 Stackoverflow 上搜索过类似的项目Error: invalid command name "dap"。使用 OpenOCD 文档,我了解dap create命令存在,以及它的作用。我发现记录的最相似的报告错误位于https://elinux.org/OpenOCD_Troubleshooting:_Invalid_Command_Name_JTAG,并且建议的解决方案似乎不适用,因为我没有从命令调用 interface/stlink.cfg线。
我看不出我做错了什么,我现在完全被卡住了。如果有人能给我一个指导,我将非常感激。抱歉,这么长的帖子。
ruby - 没有 rvm 或 rbenv 的 ruby 升级后 Ruby 版本不匹配
我正在使用 bluepill 管理独角兽,并且在 ruby 升级后独角兽启动失败并出现以下错误:
奇怪的是它只有在通过 capistrano 部署调用时才会失败。如果我在服务器上手动运行它,它运行良好。我尝试了各种各样的东西,但似乎没有任何效果。
提前致谢。
运行独角兽的 Bluepill 配置:
ruby-on-rails - 如何使用 docker & ansible ROR 部署和运行捆绑安装?
我正在使用 Ansible 和 Docker 部署 ROR 应用程序,创建 Ruby Docker 映像并推送到 Docker HUB,Ansible 将应用程序从私有仓库克隆到目标服务器,成功创建了 docker 容器,但无法运行 Ruby 命令,例如捆绑安装、数据库迁移、Rake 任务。这些命令需要在从 Ansible Code 以交互模式部署时运行。
以及如何在使用 unicorn 运行上述任务后启动应用程序。
这是为了使用 Ansible 自动化部署过程,以前使用 Capistrano,但现在我们正在从 Capistrano 迁移到 Ansible。
我希望 Ansible Playbook 使用 Docker / Nginx / Unicorn 部署 Ruby on Rails 应用程序
bluepill - 如何将 STLINK-V3MINI 连接到 Blue Pill?
我有一个 Blue Pill,我想使用TinyGo对其进行编程,但 Blue Pill 没有(明显的)硬件编程方式。所以,我买了一台 STLINK-V3MINI希望用 JTAG/SWD 来编程。我不确定如何将两者联系起来,并且在我天真地将两者联系起来并破坏某些东西之前正在寻求指导。
这是 STLINK-V3MINI:
这是 STDC14 连接器:
STLINK用户指南的第 19 页有一个 STDC14 的引脚排列,但我无法将其与建议需要SWIO
, SWCLK
,3v 和GND
.
timer - stm32f103内部中断达不到想要的频率(350ns)(最低达到4us)
我试图通过使用 TIMER1 生成的中断将 GPIO 引脚变为高电平和低电平来生成 PWM 信号,为什么我这样做是完全不同的故事,所以我需要每 350ns 生成一个中断,我计算了预分频器和72MHz 的 ARR,我发现我需要 1 的预分频器和 25 的 ARR,所以我根据这些值设置参数,现在我有 25 个时钟周期可以在下一个中断触发之前做我想做的事情,所以在每个中断指定的引脚必须改变状态(从高到低或从低到高),我正在使用示波器查看输出信号,我被困在 8us 的输出(这意味着每 4us 中断一次),我怎么能解决这个问题?我在哪里失败?我可能做错了什么?这是我在中断函数中所做的:
这是输出信号的照片: 示波器输出
中断内的代码是否有可能超过 25 个时钟周期?如果是这样,我怎么能做到不超过?谢谢
macos - CS32F103C8T6 blue-pill 克隆 - 无法从 AC6 SystemWorkbench 中闪烁
我正在尝试使用 AC6 SystemWorkBench 和 ST-LINK v2 设备用 CS32F103C8T6 芯片刷新蓝色药丸克隆。这是一个从 STM32CubeMX 构建的项目——我使用的是 MacOS Mojave 机器。这是尝试刷新设备时的输出。
我用谷歌搜索并找到了一些类似的帖子,但没有运气解决它。
有人有想法吗?
mvh Ole K Hornnes
assembly - 在线汇编中操作寄存器需要帮助(STM32F103“BluePill”)
我有一些我想开始工作的简单代码。我想要做的是使用Assembly 在STM32F103“BluePill”上尽快打开和关闭引脚PA8。我在使用正确的语法时遇到问题。
编译器抛出此错误:
Libmaple 通常允许我使用 GPIOA->regs->ODR 来使用按位操作来操作寄存器,但实际上我无法获得高于 2MHz 的切换速度。我对内联汇编也很陌生。
编辑:
所以我尝试了 Jester 的建议:
volatile uint32* odr = (GPIOA->regs->ODR); *odr = (1<<8); *odr = 0;
但是 PlatformIO 抱怨“类型为“uint32”的值不能用于初始化类型为“volatile uint32 *”的实体以及编译器:
从 'uint32 {aka long unsigned int}' 到 'uint32* {aka long unsigned int*}' 的无效转换 [-fpermissive]
但是,我尝试改进原始汇编代码:
asm易失性(
: [odr] "=r" (GPIOA_BASE->ODR)
);
这编译得很好,但它没有达到我的预期。PA8 读数为 3.3v,但它根本不振荡。如果我将 (GPIOA_BASE->ODR) 更改为 (GPIOA->regs->ODR),那么我不会在 PA8 上获得电压信号,也不会出现振荡。这里可能是什么问题?为了回答 David 和 old_timer,我想基本上重现这个人所做的事情:
http://cliffle.com/blog/pushing-pixels/#continue-reading
在该博客文章中,您将看到他使用存储和加载命令来快速测试 GPIO 外设的最大开关速度,而显然还有其他可以限制开关速度的东西,我真正想要的是至少 36MHz 来自 GPIO 引脚。我知道这是绝对可能的,因为我已经在 stm32 上配置了 TIMER1 来快速振荡,但是对于我想做的这个 VGA bitbanging 项目来说,定时器是有限的,我希望 Inline Assembly 会更灵活一些。让我开始使用 Assembly 的另一件事是我读到的一些东西:
“切换引脚的理论最大值是两个汇编存储指令,在 72MHz 或 36MHz 下必须至少有 2 个周期”
所以这应该是可能的,但我需要一些帮助才能到达那里。
usb - STM32 bluepill USB 引导加载程序 DFU
我正在尝试为蓝色药丸 STM32F103 制作一个可用于多个项目的基础项目。我希望能够使用 mirco-USB 端口刷新设备并使用串行 COM 端口发送命令
到目前为止,我有:
- 使用 STLINK 工具成功创建了一个基于“hello world”闪烁 LED 生成文件的项目下载到设备
- 创建 UART 命令接口以通过串行 FTDI 设备进行命令
- 将 DFU 引导加载程序刷到芯片上,并成功使用它将我自己的(makefile 编译)bin 刷到设备上
使用 DFU 时,我发现将 .bin 刷入设备后,它不再显示为 USB 设备。按照下面链接的文章,我不需要修改我的项目代码的ROM地址,我在我的makefile项目链接器中将文件大小缩短到55k,但仍然没有成功
https://os.mbed.com/users/devanlai/code/STM32F103C8T6_USBDFU/graph/ https://github.com/devanlai/dapboot/releases/tag/v0.1
我的问题:
- 使用 DFU 引导加载程序时,一旦我的代码运行,如果我的应用程序代码中没有写入 USB 堆栈,它应该如何作为 USB 设备可见?
- 我需要移动 bluepill 上的跳线吗?我已经尝试了各种组合但没有成功
- 在我的项目中通过 USB 获得串行通信和引导加载程序而不编写和调试我自己独特的引导加载程序的最佳方法是什么?
stm32 - 如何在没有 STLINK 的情况下刷机
我的 STLINKV2 不再工作了,Linux 没有检测到,它在第一次成功刷写后失败。我订购了一个新的,但需要 60 多天才能到达。同时,我在 Youtube 上听说您可以通过将断开的 USB 电缆连接到某些引脚然后使用跳线直接对 Bluepills 进行编程。但我无法获得任何有关此的精确信息,这真的可能吗?如何?