stm32相关内容

暂停调试器时 STM32 冻结外围设备

调试器可以在到达断点或用户暂停代码执行时停止执行 Cortex 中的代码.但是,当 cortex 在暂停状态下停止执行代码时,调试器是否会冻结其他外围设备,例如 DMA、UART 和 TIMERS? 解决方案 你只能持有 time/r 依赖外设. 我在进入主函数时调用以下代码: DBGMCU->APB1FZ |= DBGMCU_APB1_FZ_DBG_TIM2_STOP |DBG ..
发布时间:2021-11-17 22:26:51 其他开发

RAM 中的 ARM Eclipse 调试代码.是否可以查看源代码`

尝试调试复制到 SRAM 并从那里执行的代码时遇到问题. 代码正在覆盖数据 - 但它仅在系统更新期间完成.放置代码的部分在链接描述文件中正确定义,调试器正确地看到地址.但是当我进入该函数时(并且 RAM 中的代码是正确的),它并没有将源文件与在内存中执行的代码连接起来. 你知道怎么做吗.在汇编程序级别调试 C 代码并不是让我高兴的事情:) 任何帮助表示赞赏. 解决方案 问 ..
发布时间:2021-11-17 22:25:04 Java开发

在没有“循环"的情况下重复某条指令一定次数?

我以前用过 PIC,现在我用的是 STM32F415.在我的代码的时间关键部分,我需要设置一个非常精确的延迟来调整 DAC-DMA 的周期,这些 DAC-DMA 一起工作以创建周期性模拟信号. 我想添加的延迟从 0 到 63 个时钟周期(如果我能够做 10-63 个时钟周期,那也可以).在 PIC24F 汇编中,有一条指令“REPEAT",它允许我将下一条指令重复一定次数.这对我很有用,因为 ..
发布时间:2021-11-17 22:24:58 其他开发

为什么在STM32编程中需要无限循环?

我正在用 C (gcc) 编写 STM32F4,它是 ARM Cortex M4,我看到所有示例都以无限循环完成它们的 main() 函数,即使程序的其余部分将从中断中执行.如果我尝试从我的程序中删除循环,中断也会停止. 为什么我不能删除这个循环并退出主线程? 这是程序集(我猜是拇指,但即使有文档我也看不懂): LoopF​​illZerobss:ldr r3,= _ebsscmp ..
发布时间:2021-11-17 22:24:38 其他开发

STM32F4上的Libopencm3中断表

我在 STM32F4 上的项目中使用 libopenCM3.我以前使用过 ST 开发的标准外设库和较新的硬件抽象层. 在这些库中,您有带有向量表定义的程序集文件(启动文件). 这是我对 libopenCM3 所缺少的.你能告诉我在哪里可以找到这张桌子吗?还是以其他方式完成? 我真的需要在我的项目中使用中断. 谢谢. 解决方案 你能告诉我在哪里可以找到这张桌子吗? ..
发布时间:2021-11-17 22:21:33 其他开发

STM32F1 - 在裸机上使用主 SPI

我一直在尝试移植我的一些 AVR 代码来驱动一个简单的 SPI LCD 到 ARM 作为学习练习(我对 ARM 很陌生).为此,我只需要在主模式下使用 SPI. 我查看了我的设备 (STM32F103C8) 的数据表并发现我需要的 SPI1 引脚、SCK 和 MOSI 分别映射为 PA5 和 PA7 的替代功能以及其他外设(第 29 页).我的理解是,为了在这些引脚上使用 SPI 功能,我需 ..
发布时间:2021-11-17 22:20:48 其他开发

STM32 gcc (arm-none-eabi-gcc) 链接 printf 即使它没有被使用

我似乎无法弄清楚为什么某些 printf 库函数会从 libc_nano.a 链接到我的代码中,即使我从未使用过任何 printf.它窃取了至少 2K 的宝贵闪存空间.我可以在链接器映射文件中看到 _printf_i、_vfprintf_r、_vfiprintf_r 等部分. 我试过了 Wl,--exclude-libs 选项 链接描述文件中的EXCLUDE_FILE(..) ..
发布时间:2021-11-17 22:17:49 其他开发

ARM Cortex-M3 从 RAM 初始状态启动

我有两个 ARM Cortex-M3 芯片:STMF103C8T6 和 STM32F103VET6. 设置为从RAM启动时,STMF103C8T6 PC寄存器的初始状态为0x20000108;0x200001e0 用于 STM32F103VET6. 我无法在数据表中找到有关这些地址的信息.为什么它们会以这种方式启动,我可以在哪里找到有关它的一些信息? 编辑: 澄清一下.当芯 ..
发布时间:2021-11-17 22:16:38 其他开发

STM32 WWDG 中断在未配置时触发

我有一个应用程序,由于许可证问题,我正在从 Keil IDE 移植该应用程序以使用 GNU 工具链构建该应用程序.我已经能够在设备上成功设置、构建、刷新和运行应用程序. GNU 端的应用程序由于某种原因陷入了 WWDG 的弱链接 IRQ 处理程序,这是一个无限循环.应用程序不启用 WWDG,默认情况下它在重置时被禁用.我还验证了配置寄存器的默认启动值. 除了编译器之外,唯一的区别是链接 ..
发布时间:2021-11-17 22:09:36 其他开发

STM32 内部时钟

我对 STM32F7 设备(来自 STMicroelectronics 的 Cortex-M7 微控制器)上的时钟系统感到困惑.参考手册没有充分阐明这些时钟之间的差异: 系统时钟 HCLK FCLK 参考手册在章节> “RCC 将 AHB 时钟(HCLK)的 8 分频提供给 Cortex 系统定时器(SysTick)的外部时钟." 该声明与 CubeMX 的数 ..
发布时间:2021-11-17 22:08:07 其他开发

为什么这个函数确实以 1 的偏移量指向自身?

我正在尝试使用 C 为 Nucleo-64 Stm32F401re 板编写裸机闪烁程序.然而,在开始调试错误时(它还没有闪烁),我发现了一个奇怪的地址,我没有找到任何解释.这是反汇编相关部分的输出: blink.elf:文件格式elf32-littlearm.text 节的反汇编:08000000 :8000000: 20018000 andcs r8, r1 ..
发布时间:2021-11-17 22:00:12 其他开发

CMSIS 库是否应该包含在版本控制中?

通常,我曾经包含特定于设备的标头 &由芯片供应商 (ST) 和版本控制中的 CMSIS-Core 标头提供的源.数量不多,我也没有更新它们的习惯.我使用 STM32 微控制器,但不使用 CUBE 框架 或标准外设库. 最近,我需要使用 CMSIS-DSP 库.CMSIS-DSP 库带有大量的头文件和源文件.我决定使用大约 5.4 MB 的预编译库 (libarm_cortexM4lf_mat ..
发布时间:2021-11-17 21:59:19 其他开发

如何在没有 IDE 的情况下使用 CMSIS?

我正在使用 STM32F103C8T6 并想使用 CMSIS,本质上只是寄存器定义,没有代码,让我的生活更轻松,同时仍然保持在低水平.问题是我不知道如何使用 Makefile 安装库以在命令行上使用.所有文档似乎都与供应商特定的 IDE(如 STM32CubeIDE)绑定. 我想首先要做的是下载我在 GitHub 上找到的 CMSIS 库.但是,在解压 ARM.CMSIS.5.6.0.pac ..
发布时间:2021-11-17 21:56:37 其他开发

优化 ARM Cortex M3 代码

我有一个 C 函数,它试图将帧缓冲区复制到 FSMC RAM. 这些函数将游戏循环的帧速率消耗到 10FPS.我想知道如何分析反汇编函数,我应该计算每个指令周期吗?我想知道 CPU 的时间在哪里,在哪个部分.我确定算法也是一个问题,因为它的O(N^2) C 函数是: void LCD_Flip(){u8 i,j;LCD_SetCursor(0x00, 0x0000);LCD_Writ ..
发布时间:2021-11-17 21:54:46 其他开发

ARM Cortex-M 编译器差异

我将要为我的项目使用 C 语言为 STM32 处理器上的 Cortex-M 内核开发一些固件,并在网上搜索我发现了很多不同的编译器:Keil、IAR、Linaro、Yagarto 和 ARM 嵌入式处理器的 GNU 工具. 我想知道,这些编译器之间有哪些功能差异可能会影响我的选择?例如,作为发烧友,我不需要供应商的支持或帮助,目前对代码大小进行限制是可以的.此外,易用性也不是主要问题,因为我 ..
发布时间:2021-11-17 21:53:32 其他开发

STM32F103 GPIO 端口

我有一个 STM32F103C8 MCU,我想在没有 Cube MX 的情况下控制 GPIO 寄存器.MCU 有一个嵌入式 LED,我想控制它.我目前正在使用 CubeMX 和 IAR 软件,并使用以下代码将引脚设为输出(在 CubeMX 中): HAL_GPIO_TogglePin(Ld2_GPIO_Port,Ld2_Pin);HAL_延迟(1000); 这可行,但我想在没有 Cube 和 ..
发布时间:2021-11-17 21:53:24 其他开发

STM32如何获得上次复位状态

我正在使用 STM32F427,我想了解上次重置的原因.有 RCC 时钟控制 &状态寄存器 RCC_CSR 具有许多复位标志,但我无法获得任何有意义的值. 通过读取该寄存器的值,我只得到 0x03,这意味着 LSI 就绪且 LSI 开启,但如果我尝试开机、软件复位、低电压等,则不会设置有关复位的标志.我找到了以下代码片段获得如下所示的重置标志,但所有标志仍然为 0. if (RCC_Get ..
发布时间:2021-11-17 21:52:02 其他开发