问题标签 [cubemx]

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 回答
1843 浏览

c - 如何使用 W25Q32FV SPI FLASH?

正如我从winbond W25Q32FV和STM32F103RCT6 CORTEX M3开始的SPI FLASH一样。我面临着一个真正的问题,即理解事情应该如何运作。

我正在使用 CUBEMX。首先,我选择 RCC 作为晶体/陶瓷谐振器,并将我的时钟配置为 72MHz。然后我将 SPI1 配置为 FULL DUPLEX MASTER。我只有 3 个引脚(PA5 - SCK,PA6- MISO,PA7 - MOSI)所以我将 CS 引脚配置为 PA2 上的 GPIO 输出。

现在写入闪存?我需要做的第一件事是什么?我需要遵循哪些步骤?

只要我首先参考数据表,我就需要启用写入(0x06)。然后我需要发送页面程序(0x02),然后我需要发送 24 位地址。然后我需要发送至少 1 个字节的数据。所有这些过程都会在 CS 为低电平时发生,然后在发送完所有这些 CS 后将变为高电平。

然后我禁用写入启用,即写入禁用(0x04)。

之后我试图从该地址读取数据,所以,我发送读取数据(0x03)和 24 位地址。然后在缓冲区中接收数据。

这是示例代码:

此代码不起作用。刷新代码后,我什至无法进入调试模式。它说没有连接目标。我知道我做错了什么,需要一些指导。我只需要知道成功启动、写入和读取 spi flash 所涉及的步骤是什么。

就像我对一些东西感到困惑

  1. 在这里,我直接发送写入启用作为我的第一个命令。这里我需要先发送 id 吗?我的意思是如何启动并让 MCU 知道他正在将闪存连接到 spi 引脚。

2.如何发送24位地址?我开始在闪存中写入数据的起始地址是什么?

3.什么时候是简单的一闪一闪。MCU 工作正常,但是当我刷新此代码时,为什么会提示 NO TARGET CONNECTED。然后我必须按下重置并删除所有内容。

任何帮助将不胜感激。

先感谢您。

0 投票
2 回答
5810 浏览

c - STM32 SPI 发送

我一直在使用STM32F103C8,尝试了一段时间来获得SPI接口。一直在使用 Atollic TrueStudio。我还是新手,所以如果这是一个愚蠢的问题,我希望你能原谅我。

无论我尝试什么,我似乎都无法在 SPI 接口上传输任何东西。我浏览了手册,我认为我做的一切都是正确的,但显然不是。从我读到的,它似乎是:

  • 在 RCC APB2ENR 中启用 SPI 时钟
  • 配置 SPI CR1 寄存器
  • 使用 SPE 位启用 SPI
  • 通过将数据加载到 SPI-> DR 寄存器来发送
  • 通过从 SPI-> DR 寄存器读取数据来接收,因为有一个发送和一个接收缓冲区链接到 SPI->DR

我尝试将 MOSI 引脚循环回 MISO 引脚并进行写入,但一无所获。然后我连接了一个逻辑分析仪,SPI时钟引脚甚至没有做任何事情。下面的相关代码,如果有人可以提供帮助,那就太好了:

对缩进感到抱歉,正如我所说,我对此仍然很陌生,但这就是编译和运行的代码。任何帮助表示赞赏,谢谢!

编辑:不确定我是否应该包含 USART 功能,这只是为了打印到我的笔记本电脑上,这样我就可以看到 SPI 数据寄存器有什么。但我想如果我把它包括在内,这个程序会更有意义。

0 投票
2 回答
160 浏览

stm32 - CubeMx&Atollic 裸项目中的宏观可见性

我从头开始创建了一个简单的 CubeMx 项目并在 Atollic TrueStudio 上打开它。当然,它的编译成功了。我一直在查看项目的目录和文件,以更好地了解构建新项目时的裸结构。

我目前使用配备 CortexM4 CPU 的 STM32 板,并且我正在使用 GCC 编译器用C 语言进行编程。在项目中,我发现了一个名为core_cm4.h的头文件,它是宏声明的范围,即#define语句。这是奇怪的事情出现的地方:当我尝试在main.c文件(以及任何其他新文件)中使用这些宏时,它们都是可用和识别的,但以下是:

__GNUC__符号已定义,编译器不会报告任何警告或错误。但是,IDE 并未在下拉菜单中提供这些宏,并将该词作为语法错误发出信号。

我试图将声明移动到core_cm4.h文件中的其他位置,但未成功。我忽略了一些相关的东西吗?

0 投票
0 回答
154 浏览

eclipse - 如何传输 adc stm32 蓝牙低功耗 x-nucleo 的值?

我使用“Nucleo idb04a1 bluetooth low energy”扩展。我从 ST 网站下载了 CubeMX。我运行了示例项目,它运行良好。

现在我想通过 UART 传输板 STM32 f401RE 的 ADC 引脚的值,并为我的项目读取我的重量和弯曲传感器的值,并在我的智能手机上查看结果。我的项目需要使用哪些库、函数和引脚?我使用 CubeMX 来配置我的电路板的引脚。

非常好的问候

0 投票
1 回答
829 浏览

stm32 - 硬件 NSS 信号与映射到 GPIO 输出的 PA15 冲突

我有一个STM32F103RCT6 STM32_Mini_Pro的中文开发板,其中一个winbond SPI flash连接了SPI3。片选与 PA15 引脚相连。

在 STM32 cubeMX 中配置 SPI 时,我将片选即 PA15 分配为软件 NSS 的 GPIO 输出。

但是在分配它时我收到这样的错误

硬件 NSS 信号与映射到 GPIO 输出的 PA15 冲突

这是我在 Cube MX 中的作业

PA15 分配为 GPIO 输出

这个问题的原因是什么以及如何纠正它?

谢谢

0 投票
1 回答
1438 浏览

stm32 - f_mount() 返回 FA_DISK_ERR

在大家提出建议后,我对源代码进行了一些更改。为了将 FATFS API 与 SPI 接口连接,我遵循了此代码..

https://github.com/eziya/STM32_SPI_SDCARD/blob/master/Src/fatfs_sd.c

并相应地改变了我的user_diskio.c

做完所有这些事情之后,我的 SD 卡也回来了FA_DISK_ERROR

我已经更换了 SD 卡插槽以及 SD 卡。但什么都没有改变。

我的user_diskio.c样子是这样的:

fatfs_sd.c看起来像这样:

转到上面的 GitHub 链接

不知道我哪里出错了。

有关此主题的任何内容都会有所帮助。

提前致谢。

0 投票
4 回答
31187 浏览

visual-studio-code - 如何配置 VS Code 以使用 cubeMX 构建和调试 STM32 项目 - Windows 10

我是 STM32 编程领域的新手,很长一段时间以来一直在努力寻找合适的 IDE。我知道所有其他的 IDE,比如 Keil 和 IAR,但是购买它们只是为了学习的成本对我来说是非常高的。

我已经开始使用 VS Code 进行越来越多的开发工作,而且我认为这将是一个很好的 IDE 用于 STM32 开发。在过去的几天里,我在网上找到了很多关于如何配置 IDE 来构建 STM32 项目的示例,但它们似乎都缺少我需要正确编译项目的重要信息。比较郁闷,

我想知道是否有人可以为我提供有关如何设置 VS 代码以使用 cubeMX 和 arm 工具链的完整设置指南,或者如果您感觉非常好,请给我发送一个示例项目,我可以用作基础学习。

只是一些背景信息,我知道如何使用 cubeMX 来生成基础项目以及相关的 makefile,我还安装了最新的 GNU-Tools-Arm-Embedded。

预先感谢您的帮助

0 投票
4 回答
5950 浏览

stm32 - STM32F7 + FatFs = FR_NOT_READY

我现在使用 CubeMx 4.23.0 和 STM32F7 1.8.0 MCU 的固件包是 Core746i 板上的 STM32F746。一切都是由 CubeMx 自动生成的。

主.c:

sdmmc.c:

如果 f_mount(&SDFatFs, (TCHAR const*)SD_Path, 0) <- 此处为 1(强制安装),则输出为:

  1. f_mount = 0x03
  2. f_open = 0x01

使用 0(现在不要挂载)输出为:

  1. f_mount = 0x00
  2. f_open = 0x03

0x03 值是 FR_NOT_READY,但官方信息对此非常模糊

我尝试过的事情:

  1. 将 HAL_SD_Init(&hsd1) 添加到 MX_SDMMC1_SD_Init() 因为我没有找到 SD 卡 GPIO 初始化发生在哪里。
  2. 2 GB 无名 SD 卡,1 GB 创见卡。
  3. 不同的 hsd1.Init.ClockDiv 3 到 255。
  4. 彻底重新焊接一切。
  5. 使用 HAL_SD_ConfigWideBusOperation(&hsd1, SDMMC_BUS_WIDE_4B) 切换到 4 位宽总线;
  6. 打开和关闭引体向上。

但卡仍然没有安装。它采用 FAT 格式,在 PC 上工作,我尝试打开的文件存在,但为空。

如何让它安装?提前致谢!

0 投票
2 回答
321 浏览

debugging - ARM stm32f407 中的调试问题

当我使用 cubemx 设置我的 stm32f407 arm 内核的外围设备时,就在生成代码之前,我检查并选择了项目设置中的“将所有空闲引脚设置为模拟(以优化功耗)”对话框 - >代码生成器 - > HAL 设置,不屏蔽调试引脚(swdio 和 swclk)。之后,我使用 keil ide 在微控制器内成功下载了一个简单的闪烁代码。但是现在当我想使用 keil 擦除或下载代码时,我在调试选项卡中看到“没有连接目标”错误,我无法下载任何代码。我怎么解决这个问题?感谢您的帮助。

0 投票
3 回答
36858 浏览

timer - STM32F4 定时器 - 计算周期和预分频,并产生 1 ms 延迟

我正在STM32F407VGT6使用CubeMX.
所以我从通用计时器开始,我被预分频和周期值困住了。

基本上我想每隔n(n = 1,2,3 ..)ms产生一个定时器中断并执行一些任务。
计算周期和预分频值的公式有很多变化

一些版本的公式是:

TIMupdateFreq(HZ) = 时钟/((PSC-1)*(Period-1))
更新事件 = TIM clk/((PSC+1)*(ARR+1)*(RCR+1))
预分频器 = ((( (时钟速度) / ((周期) / (1 / 频率))) + 0.5) - 1)

所以来到这个问题,我的核心时钟运行在168 MHz但我可以看到定时器连接到APB1 Bus运行在84 MHz

我尝试了一个产生 1 毫秒延迟的代码(作者说),在使用该值进行预分频和周期后,我生成了一个代码,它也产生 1 毫秒延迟(凭直觉 - 没有范围)。

该代码使用 41999 的预定标值和 1999 的周期。

所以,
PSC - 41999
ARR - 1999
将此应用于第二个公式

Update Event = TIM clk/((PSC+1)*(ARR+1)*(RCR+1))

Update Event = 84000000/(42000*2000) = 1(这是1ms延迟吗??)

好的,所以现在我想了解它是如何PSC = 41999Period = 1999选中的?它是否纯粹基于假设,因为无论我使用什么公式,我都必须假设一个变量。??如果我想说 1.5 或 2.3 或 4.9 之类的精确时间,如何计算预分频和周期。?

编辑

此外,当我使用PSC=41999 and Period =999更新事件值为 2。

Update Event = 84000000/(42000*1000) = 2

但是我的延迟是每秒两次。即500毫秒

当我使用PSC=39999 and Period =4199更新事件值为0.5。

Update Event = 84000000/(40000*4200) = 0.5

我的延迟 2 毫秒。

提前致谢