问题标签 [stm32f1]
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.
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线。
我看不出我做错了什么,我现在完全被卡住了。如果有人能给我一个指导,我将非常感激。抱歉,这么长的帖子。
c - 为什么我的 wsb2812 led 不按预期工作,最后一个 led 不工作
我试图顺时针和逆时针点亮我的 LED 灯。我使用 mpu6050 作为 LED 的方向控制。我检查了我的 mpu6050 驱动代码,它们没问题。顺时针工作时效果很好,所有 LED 都亮红色。像这样 逆时针工作时在 此处输入图像描述,出现问题在此处输入图像描述
我尝试了很多方法来解决,但都没有奏效。这是我的 LED 驱动程序代码
让我感到不安的两个功能是这些
单片机:stm32f103c8 LED:wsb2812 带 24 个 LED
arduino - Si7021 温度和湿度传感器正在读取错误的传感器值
我在我的 PCB 板上同时使用 Si7021 硅实验室的温度和湿度传感器和 APD300 光传感器,我还使用 STM32F103 Arduino 兼容微控制器,它通过 I2C 协议与传感器通信,我之前已经测试过,传感器正在读取正确的传感器Arduino 串行监视器中的数据,但现在我的湿度和温度传感器读取的值太多,例如“219982828282 C”,即使我使用了正确的上拉电阻,我想知道我的代码是否有问题使用(从互联网上找到)。我附上了我使用的源代码和传感器的串行监视器输出。
Arduino 串行监视器输出:
照度:101 相对湿度:65802760.00 % RH 摄氏温度:92502848.00 C 华氏温度:166505152.00 F
c - 我在 stm32f103 上的 ILI9325 驱动程序在 Atollic TrueStudio 中工作,但在 Arduino IDE 中不起作用
我正在尝试将 stm32f103c8t6板与 ILI9325 LCD显示器连接。我在 Atollic TrueStudio 中为它创建了一个驱动程序并成功运行它。现在,我正在尝试将驱动程序传输到 Arduino IDE,因为在这里将我的代码与该项目的其他代码集成起来会更容易。但是,该驱动程序在 Arduino IDE 中不起作用。LCD只是空白。
我已经在 Arduino IDE 中为 stm32f1 测试了基本的 GPIO 操作,它工作正常。我检查了 LCD 上的引脚。他们似乎收到了董事会的命令。所有接线都是正确的,因为屏幕使用 Atollic 的代码工作,无需任何接线更改。
这是我在 Arduino IDE 中使用的驱动程序代码。它与 Atollic 中的基本相同。我改变的只是初始化和设置GPIO的功能。
它应该做的是初始化 LCD 并将其填充为蓝色。相反,它只是一个空白屏幕。
arduino - STM32 bluepill 板中使用的引导加载程序是什么?
Arduino blue pill 使用的引导加载程序是芯片制造商预装的引导加载程序,还是由 Arduino 构建的?如果是这样,我可以使用 FTDI 编程器将 Arduino 引导加载程序(不是 USB 引导加载程序)替换为 STM32 新芯片(带有制造商引导加载程序)吗?在这里,我只有一个带有 FTDI 连接器的 STM32F103 MCU(新芯片)板(不是蓝色药丸),boot0 和 boot1 配置跳线也有引脚来获得 3.3v 和 GND。
c - i2c 传输,stm32f103 作为 Master,STOP 条件生成问题
我正在使用 KEIL。这是我的 I2C 设置代码。我正在尝试使用中断进行设置。实际上,一切都像这样正常工作。但我唯一的问题是我做了一件奇怪的事情才能让它发挥作用。
如果你看一下最后几行:
这里当我调试时(这段代码,没有行(void)I2C1->SR1;),当我尝试发送数据时,第一个包将被发送而没有任何问题。最后它会产生停止条件(MSL 位将被清除,并且线路被释放),但 STOP 位将保持设置(这就是我在 I2C_transmit while 循环中放置 STOP 位检查的原因)。如果我在调试窗口中手动清除 STOP 位,它会继续,但在下一个发送周期它不会产生正确的启动(SB 将被设置,但 MSL 位将保持在复位状态)。
在调试时,如果我在此行之前放置断点:
(请记住,此时我没有找到解决这个问题的方法,所以没有这条线,一切都一样 - (void)I2C1->SR1;)
停在那里,检查寄存器,然后继续,一切正常。我在stackexchage上发现:
特别是关于读取寄存器的部分可能会给您带来调试地狱,因为调试器的读取将触发状态机,就像读取您的代码一样,所以一旦您停止并检查寄存器(有时调试器会自动完成所有操作)读取发生,外围设备将再次执行某些操作。
很明显,当我触发 STOP 条件时,有些要求没有得到满足。所以我决定检查是否是这种情况,似乎这是一个解决方案。添加读取 I2C 的任何寄存器((void)I2C1->SR1;//或任何其他 I2C 寄存器),解决了问题。必须有合乎逻辑的解释,但我找不到。我非常仔细地研究了参考手册,结果是这段代码,但我没有找到任何可以解释这一点的东西。
以下是参考手册中有关主传输的表格,供您参考:
你能说出我没有满足什么条件,所以我的 STOP 没有得到妥善处理。
exception - stm32f103c8t6 - Disable all interrupts except one - Timing critical, but interruptable operation
I'm trying to write some code for the stm32f103c8t6 microcontroller. It is constantly communicating with a device, which requires interrupts to be disabled... however, this also needs to be interrupted immediately by the falling-edge of a certain GPIO pin.
Without disabling interrupts, the communication fails occasionally, with sporadic delays of about 45 clock cycles. Disabling all interrupts by setting the I bit of the CPSR register fixes this problem entirely, making me think it's a interrupt problem... however, then my GPIO interrupt doesn't work, so this isn't a solution.
I've tried clearing all enable bits in the NVIC, except the one used for my GPIO interrupt, but the problem still occurs.
Are there any interrupts which aren't handled by the NVIC which might be causing the problem? Or does anyone have any other ideas? Any help or ideas would be much appreciated! Thanks.
c - 请我试着知道我需要哪个库我需要 ti handel NVIC 以及我应该做什么来声明 NVIC_InitStructure
我正在研究 STM32F103,目的是实现一些库。
当我声明 NVIC_InitStructure 时,它带有红色下划线,这意味着 Eclipse 无法识别它。我在使用它之前确实声明过:NVIC_InitTypeDef NVIC_InitStructure;
但它是红色未划线的。
也许在使用之前要包含一个库?
c - UART转UART桥STM32
有没有一种简单的方法可以通过软件“桥接”2 条 U(S)ART 线路(STM32F107 上的 USART1 和 UART5)?
我需要将 USART1 传入的数据转发到 UART5 并反向。
目前的MCU是STM32F107VCT7
我想这样做的主要原因是通过连接到我的 MCU 的 UART 更新设备。MCU 连接到 PC。
PC --- STM32 --- 其他设备