问题标签 [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.
timer - STM32F103CB 定时器不准确
我是 stm32 的新手,我最近创建了一个项目,每秒在 GPIO 引脚上产生一个快速脉冲,只是为了确定逻辑分析仪的时间精度,但是,我总是得到大约 0.999,935 秒而不是一秒的时间,我尝试了我在互联网上搜索的所有内容,但没有任何效果,请提供帮助。
我的代码主要是由 STM32CubeMX 生成的,这些是 CubeMX 的配置
2 到 3 之间的时间始终在 0.999935s 左右,我怎样才能将这个错误修复到恰好一秒???
timer - STM32F103 在 SPI 处于半双工模式时使用 MISO 引脚
我正在使用 STM32F103C8T6 重新映射 SPI1 并处于半双工模式(SPI 未使用 MISO 引脚)。我想使用 MISO 引脚(PB4)通过重新映射的 TIM3 生成 PWM,但在 SPI1 计时时我无法让它工作。那么有没有办法在半双工模式下使用 SPI 的 MISO 引脚来实现其他 AF 功能,同时 SPI 保持时钟?
UPD。我发现当SPI处于半双工主模式时,MISO pin可以用作GPIO
stm32 - STM32f103CB的硬件fifo大小是多少,如何知道FIFO是空还是满?
如标题所述,我在数据表中找不到相关信息。
我在使用 UART 时遇到了一些问题。我有两个芯片,主芯片发送包到RS485总线,从芯片接收然后发送响应(UART1),同时定时器每秒通过TTL(UART2)发送调试信息到pc,它们应该是相互独立的,但是当UART2工作时,UART1不工作,并且数据仍然从主芯片传输到RS485总线,所以当从芯片使用UART2时,部分数据将不会被从芯片接收,之后有一段时间,从芯片上的整个系统变得很奇怪(定时器仍在工作),我猜是 FIFO 溢出。所以我要求知道fifo大小的功能或方法。
谢谢。
c - 为什么不能打开源输入文件“ARMCM3.h”:?使用 ST-link 和 STM32F103ZET6
当我尝试使用这些代码构建以下项目时,错误发生如下!
输出如下:
此外,我正在使用带有 stm32f103zet6 的 st-link!我不知道为什么它找不到文件,我也没有找到文件!那是因为一些包裹被破坏了还是如何解决这个问题?谢谢!
string - 使用ESP8266的软件串口
我正在使用 UART 线上的 STM32F103 将保存在 SD 卡上的 CSV 文件传输到 ESP8266,文件读取和 UART 传输片段如下。 STM32f103 的 While 循环用于读取/传输文件。
使用 ESP8266 代码上的软件串行代码,我可以从 STM32F103 读取传输的字符串,传输字符串的实际长度为 59,但我在串行监视器 ESP8266 串行监视器输出上得到以下输出
软件代码如下
我已经使用上面的代码进行读取,但是在第一个字符串大约 125 之后长度显示不同,并且因为第一次它被复制到 char 缓冲区但进一步显示为空。
如果有人能说明导致此问题的原因以及如何解决它,将不胜感激,谢谢!
stm32 - 如何为 BluePill 编译 StdPeriph 库示例?
我正在尝试使用GNU arm eabi gcc
: 编译示例,我从编译器中得到了这个:
然后我添加-DSTM32F10X_MD
到命令行,因为我相信,也许这就是 BluePill 是错误的,然后我得到了这个:
我花了一段时间搜索才意识到 EVAL 是指 ST 出售的用于测试其产品的评估板之一,但我当然没有,我有一个来自 Aliexpress 的便宜的 bluepill。那么我现在的选择是什么?如何编译示例?
更新:这是我完整的命令行
c - 为什么 IAR 中的 __attribute__((weak)) 无法编译?
我正在 IAR 上研究 STM32F1,我编写了一个弱函数使用
主程序
时间
tmp.c
它编译时出现错误:
但是,如果我使用 __weak 而不是属性((弱)),它会按预期正常工作。
tmp.c
.
那么,为什么属性((弱))不起作用?
assembly - EXTI 中断被不停地抛出(stm32f1)
我正在尝试使用下降沿 EXTI 中断简单地打开带有按钮的 LED。不幸的是,LED 在没有触摸按钮的情况下闪烁,使用 gdb 进行调试也显示 ISR 被重复调用。我之前测试过 LED (PA5) 和 Button(PC13:带上拉电阻的输入模式),它们的配置是正确的。
所以我认为EXTI中断配置肯定有问题。
main
在使用以下函数调用之前,配置是在汇编中完成的:
EnableIRQ
使用以下代码启用 NVIC_ISER1 寄存器中的中断:
ConfigureEXTI
从以下位置调用Reset_Handler
:
main
只包含一个无限循环while(1) __WFI();
ISR 在 C 中实现:
所以我正在执行我提取参考手册的步骤:
- 编程触发寄存器 EXTI_RTSR 和 EXTI_FTSR
- 在 EXTI_IMR 中启用中断请求
- 在 NVIC 上配置中断
我不太确定为什么中断不能正常工作,是否有设置它的步骤,我错过了?
编辑:我刚刚注意到一些奇怪的事情,LED 的闪烁仅在与 gdb 连接(通过 openocd)时发生,但如果我只是闪烁 .elf,则 LED 不会闪烁(但按钮不起作用)。用于闪烁/调试的命令:
或调试
arm - 从c中的struct定义指向数组的指针
我试图通过这样的结构方法访问 stm32f103 MCU 中的寄存器数组:
但它给了我错误:
我发现了问题,它是指针的名称,它与最后一行中的寄存器名称相同,所以我进行了更改,它现在正在工作: