问题标签 [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.
stm32 - 用CAN总线对STM32微控制器编程的问题
我是 STM32 微控制器和 CAN 总线通信协议的新手,我正在编写 STM32F103xx 微控制器。我想使用 CAN 总线将数据传输到同一系列的另一个微控制器。
我设置了所有必要的设置,但是在调试代码时它卡在传输挂起函数中并且不传输。我希望传输数据,但事实并非如此。
我不相信我的硬件有问题。
PS:我已经尝试过 CAN 处理程序的正常模式和 LOOPBACK 模式,但它们都不起作用。
stm32 - 支持 DMA 的 ADC 与 FreeRTOS
对于 DMA 连续请求,程序只会在 DMA1_Channel1_IRQHandler 中循环,并且 FreeRTOS 线程没有运行。
有谁知道如何解决这个问题?
c - 如何从 STM32F103 USB 设备应用程序发送 ALT 代码?
我已将 STM32CubMX 生成的 STM32F1 USB HID 设备示例从鼠标修改为键盘,并且我可以通过在 USB 报告中发送扫描码来向主机发送字符。
现在我希望在按下特定按钮时从键盘发送一些特殊字符。
我认为他们的方式是发送包含字符 Unicode 的键的扫描码。
例如,要将带有 Unicode U+1F601(十进制 128513)的笑脸发送到 Windows 机器,我必须发送 1、2、8、5、1、3 的扫描码。我不明白的是如何用 ALT 键修饰符发送这个?
所有扫描代码都应该在带有 ALT 修饰符集的单个报告中发送,还是在不同的报告中发送?
我有一台 Ubuntu 机器并在报告中发送 CTRL+SHIFT+u 然后扫描代码后跟 Enter 键工作正常。
c - 使用 FatFs 访问 SDHC 卡上的现有分区
我一直在尝试将我的所有代码从 STM32 Arduino 库转移到 ST Hal 库,但我遇到了 SD 卡的问题。我使用的 SDHC sd 卡有两个分区(一个用于恢复出厂设置,另一个用于正常设置)它们在我的 PC 上显示为驱动器 D 和 E。
因此,在为我的 STM32F1 芯片设置 FATFS 时,使用 SD 总线一位模式时一切正常。使用标准代码,我可以写入出厂重置分区:
初始化代码并安装驱动器时,一切似乎都很好,即使我想安装第二个分区(我不确定这是否是我对代码所做的),调试器中的返回都是 FR_OK:
我承认,即使我进行了研究,我发现安装和随后的 VolToPart 数组显然需要有点模糊。
在挂载两次调试代码后(参见上面的代码),我使用驱动器标识符测试了代码(我打开了_FS_RPATH,我认为它没有效果,但只是为了确定)我可以将 Hello World 写入 0 :Test2.txt 但得到 1:Test2.txt 的无效驱动器错误。
我希望能够在驱动器之间切换,但我觉得我错过了一些我需要启动或做的事情。目前我不确定 FatFs 是否可以看到 SDCard 分区,我只是没有对其进行初始化,或者它是否是 SD 卡看不到的完全独立的驱动器。我希望有人能够帮助我,如果您需要更多信息,请告诉我。
编辑:经过一段时间的调试,我发现了一些东西:SDPath 在链接驱动程序中被定义为“0:/”,所以这个驱动器工作是有道理的。其他路径未定义(据我所知,只是获取默认值“0:/”,这意味着我正在执行相同的安装两次。当我尝试添加单独的驱动程序并初始化那个时,它仍然是一个无效的磁盘错误。
然后我运行了两次链接驱动程序,并在第二次安装时收到了 FR_INVALID_DRIVE 消息。我用相同的 FATFS 对象和不同的对象都试过了。
adc - 如何在 stm32f103 bluepill 中使用 VREFINT?
我无法理解 VREFINT 在 stm32f103 板上的使用。谁能解释我如何使用 VREFINT 在 stm32f103 中获取 adc 值?
spi - STM32F103 SPI不同引脚不工作
我目前正在使用 STM32F103C8T6 微控制器进行 LoRaWAN 技术项目。对于 LoRa,我在全双工主模式(特别是 spi1)和 CubeIDE 中使用 SPI,当您激活 SPI1 时,会自动激活引脚 PA5、PA6 和 PA7(ver1):
然而,PCB 是设计和印刷的,不幸的是这些引脚很忙。因为,之前计划使用其他 SPI1 引脚(PB3、PB4、PB5)(ver2):
所以,当我使用ver1时,一切都很好,LoRa连接到服务器并发送数据没有问题。但是,当我使用 ver2 时,它根本不起作用。我调试发现问题出在哪里,发现SPI读取失败(读取LoRa版本时,它返回0)。因此,ASSERT
火灾和代码陷入无限循环。我在互联网上找不到任何关于 SPI 引脚差异的参考。
谁能解释这些引脚的区别?是否可以使用ver2?预先感谢。
PS 我正在使用 HAL 库 + LMIC 库(用于 LoRa),并且 SPI 的配置对于 ver1 和 ver2 都是相同的。如果需要,这是配置代码:
PSS:我也在电子堆栈交换中提出过这个问题,但那里没有答案,所以我决定也在这里分享这个问题。
stm32 - 没有 HAL 的 STM32 ADC 初始化
我正在尝试编写一些没有 HAL 的基本代码来初始化和读取 ADC,但我无法让它正确响应。我在蓝色药丸开发板上使用 STM32F103C8T6。功能如下:
引脚 B1 (ADC9) 连接到 0-3.3V 信号(通过分压器提供 12V 电源电压)
当信号低于我称为 SUPP_V_MIN_VAL 的常数时,设置引脚 B9。如果信号高于该值,则引脚 B9 被清除。
我将 SUPP_V_MIN_VAL 定义为 2606.0。我将所有内容都转换为浮点数,因为在我的代码的单独部分中,我需要将当前的 ADC 值显示为浮点数)。
问题是我认为我没有正确初始化我的 ADC,或者没有正确地转换我的类型。我发现 ADC 读数始终为 0。我的初始化如下:
我正在阅读别针:
SuppVolt 定义为
我也可能在做一些愚蠢的事情(我实际上还没有确认引脚 B9 在 ADC1 上,但我假设这是因为蓝色药丸只有一个 ADC??)或引用寄存器中的错误位。
谁能帮我发现我的错误?先感谢您!!
stm32 - Atollic 无法验证 ST 设备?
尝试从 Atollic TrueStudio 9.3 编程和调试 STM32F103 (Bluepill) 我收到以下消息:
STMicroelectronics ST-LINK GDB 服务器。版本 5.1.0 版权所有 (c) 2018,意法半导体。版权所有。
使用以下选项启动服务器:持久模式:禁用日志记录级别:1 侦听端口号:61234 状态刷新延迟:15 秒详细模式:禁用 SWD 调试:启用
供应商 = 0x55
初始化 ST-LINK 设备时出错。原因:ST-LINK:无法验证ST设备!中止连接。
尝试在 St-Link 实用程序中做同样的事情没有任何问题(也可以擦除和编程):
这可能是什么问题,为什么验证有问题?
Tnx 提前帮助!
interrupt - 如何在 stm32f1 的 HAL 库中使用 EXTI 中断?
我需要在我的 stm32f103 板的 A1 端口上配置一个 exti 中断。我使用 stm32cubemx 创建了一个模板,但我正在尝试手动配置中断,因为它是我已经编写的代码的新功能。我正在阅读很多主题,但我没有找到任何解决方案。在这个项目中,我使用 HAL 库并按照以下步骤操作:
配置GPIO
启用 IRQ
自定义回调
我在一个新的 .c 文件中编写了回调函数,并且我没有触及 stm32f1xx_hal_gpio.c 中的相同函数
我没有启用宏 HAL_EXTI_MODULE_ENABLED 因为项目找不到对应的 .h 头文件但没有宏,代码构建没有错误。
我忘记了什么?
谢谢你
gcc - what means about "-DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER" as the flags of arm-none-eabi-gcc?
they seems like startup and standard files of stm32 ,but i can not find them in "GCC offical refeence PDF" .
why can they be used directly
this is the flags of arm-none-eabi-gcc in makefile: