问题标签 [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.

0 投票
0 回答
78 浏览

timer - STM32F103CB 定时器不准确

我是 stm32 的新手,我最近创建了一个项目,每秒在 GPIO 引脚上产生一个快速脉冲,只是为了确定逻辑分析仪的时间精度,但是,我总是得到大约 0.999,935 秒而不是一秒的时间,我尝试了我在互联网上搜索的所有内容,但没有任何效果,请提供帮助。

我的代码主要是由 STM32CubeMX 生成的,这些是 CubeMX 的配置

NVIC

TIM2

时钟配置

逻辑分析仪

2 到 3 之间的时间始终在 0.999935s 左右,我怎样才能将这个错误修复到恰好一秒???

0 投票
0 回答
477 浏览

timer - STM32F103 在 SPI 处于半双工模式时使用 MISO 引脚

我正在使用 STM32F103C8T6 重新映射 SPI1 并处于半双工模式(SPI 未使用 MISO 引脚)。我想使用 MISO 引脚(PB4)通过重新映射的 TIM3 生成 PWM,但在 SPI1 计时时我无法让它工作。那么有没有办法在半双工模式下使用 SPI 的 MISO 引脚来实现其他 AF 功能,同时 SPI 保持时钟?

UPD。我发现当SPI处于半双工主模式时,MISO pin可以用作GPIO

0 投票
1 回答
470 浏览

stm32 - STM32f103CB的硬件fifo大小是多少,如何知道FIFO是空还是满?

如标题所述,我在数据表中找不到相关信息。

我在使用 UART 时遇到了一些问题。我有两个芯片,主芯片发送包到RS485总线,从芯片接收然后发送响应(UART1),同时定时器每秒通过TTL(UART2)发送调试信息到pc,它们应该是相互独立的,但是当UART2工作时,UART1不工作,并且数据仍然从主芯片传输到RS485总线,所以当从芯片使用UART2时,部分数据将不会被从芯片接收,之后有一段时间,从芯片上的整个系统变得很奇怪(定时器仍在工作),我猜是 FIFO 溢出。所以我要求知道fifo大小的功能或方法。

谢谢。

0 投票
1 回答
161 浏览

c - 为什么不能打开源输入文件“ARMCM3.h”:?使用 ST-link 和 STM32F103ZET6

当我尝试使用这些代码构建以下项目时,错误发生如下!

输出如下:

此外,我正在使用带有 stm32f103zet6 的 st-link!我不知道为什么它找不到文件,我也没有找到文件!那是因为一些包裹被破坏了还是如何解决这个问题?谢谢!

0 投票
1 回答
86 浏览

timer - 为什么在 STM32F103CB 上的 UART 中(写入 DR 寄存器)和(实际显示的数据)之间存在延迟?

我很好奇提到的标题之间的延迟时间,我在将数据写入UART-> DR时切换了一个IO,延迟时间从3微秒到10x微秒不等 在此处输入图像描述

在此处输入图像描述

我不确定时间抖动是否与波特率 9600(104 微秒/位)有关,

写DR寄存器时不是应该立即显示数据吗????

为什么延迟时间不一样(或接近)?

0 投票
1 回答
435 浏览

string - 使用ESP8266的软件串口

我正在使用 UART 线上的 STM32F103 将保存在 SD 卡上的 CSV 文件传输到 ESP8266,文件读取和 UART 传输片段如下。 STM32f103 的 While 循环用于读取/传输文件。

使用 ESP8266 代码上的软件串行代码,我可以从 STM32F103 读取传输的字符串,传输字符串的实际长度为 59,但我在串行监视器 ESP8266 串行监视器输出上得到以下输出

软件代码如下

我已经使用上面的代码进行读取,但是在第一个字符串大约 125 之后长度显示不同,并且因为第一次它被复制到 char 缓冲区但进一步显示为空。

如果有人能说明导致此问题的原因以及如何解决它,将不胜感激,谢谢!

0 投票
1 回答
51 浏览

stm32 - 如何为 BluePill 编译 StdPeriph 库示例?

我正在尝试使用GNU arm eabi gcc: 编译示例,我从编译器中得到了这个:

然后我添加-DSTM32F10X_MD到命令行,因为我相信,也许这就是 BluePill 是错误的,然后我得到了这个:

我花了一段时间搜索才意识到 EVAL 是指 ST 出售的用于测试其产品的评估板之一,但我当然没有,我有一个来自 Aliexpress 的便宜的 bluepill。那么我现在的选择是什么?如何编译示例?

更新:这是我完整的命令行

0 投票
2 回答
488 浏览

c - 为什么 IAR 中的 __attribute__((weak)) 无法编译?

我正在 IAR 上研究 STM32F1,我编写了一个弱函数使用

主程序

时间

tmp.c

它编译时出现错误:

但是,如果我使用 __weak 而不是属性((弱)),它会按预期正常工作。

tmp.c

.

那么,为什么属性((弱))不起作用?

0 投票
1 回答
57 浏览

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 不会闪烁(但按钮不起作用)。用于闪烁/调试的命令:

或调试

0 投票
0 回答
28 浏览

arm - 从c中的struct定义指向数组的指针

我试图通过这样的结构方法访问 stm32f103 MCU 中的寄存器数组:

但它给了我错误:

我发现了问题,它是指针的名称,它与最后一行中的寄存器名称相同,所以我进行了更改,它现在正在工作: