未设置STM32F205 SPI RXNE标志

我在主模式下使用STM32F205的SPI1。并且在事务处理期间从不设置RXNE标志。以下是SPI初始化的一部分: SPI1->CR1 = SPI_CR1_MSTR | SPI_CR1_SSI | SPI_CR1_SSM | SPI_CR1_SPE; SPI1->CR2 = 0; 然后我尝试执行单个字节的发送/接收: while(!(SPI1->SR & SPI_FLAG_TXE)) {} // wait for compeltion of the previous

Stm32 我可以在Windows上下载minicom应用程序吗?

我正在尝试下载minicom,用于我在eclipse中使用STM32微控制器进行的FreeRTOS项目。minicom应用程序应该允许我读取键盘输入,但它可用于MacOS。 有没有办法把它下载到Windows上 谢谢。您只需要一个用于windows的串行终端 您有很多自由选择: Putty、Realterm等。下载并使用。谢谢!那么我应该遵循这样的原则吗?只需先设置putty连接,然后再设置minicom?本文是针对IGEP板的,那么它是否适用于其他微控制器,如stm32?

ARM上的RTC报警与系统报警(STM32)

我在学英语。有些困惑我真的无法理解 RTC报警和原始系统报警有什么区别。我只知道RTC可以节省更多的电能,其他什么都不知道。有谁能给我解释一下,或者给我举个例子来说明两者的区别吗。非常感谢。请看一下这个。这应详细说明RTC的功能及其提供的功能 简而言之:STM32微控制器中嵌入的实时时钟(RTC)充当独立的BCD定时器/计数器。RTC可用于提供功能齐全的日历、警报、定期唤醒装置、数字校准、同步、时间戳和高级篡改检测 RTC也可以比内部SysClk更精确。应该有合适的白皮书和文档可用:我已经尝试让

STM32:从SRAM引导和获取向量表

我想从设备的SRAM区域运行我的程序 我似乎很清楚,我必须执行以下步骤: 修改向量表偏移寄存器SCB->VTOR(位于0xE000ED08)以指向SRAM区域的开始,因为我的向量表位于该区域:0x20000000 重置设备,使其再次获取堆栈指针初始化值和重置处理程序地址 不幸的是,每当我在OpenOCD中发出reset init命令时,SCB->VTOR的值就会被清除。因此,堆栈指针初始化值和重置处理程序地址从0x00000000获取,而不是从0x20000000获取 问题: 如何让我的STM

目标停止时STM32切换引脚

我使用的是STM32F7系列微控制器,当内核被连接到JTAG接口的调试器停止时,有一些GPIO更改值(切换、脉冲、高z…)将非常有用。有人知道这样的特征吗 有DBGMCU寄存器,当内核停止时,这些寄存器可以选择性地停止某些外围设备(主要是定时器) 这样做的目的是让计时器在运行时输出低电平信号,在不运行时输出高电平信号。一个定时器不能做到这一点,但在主从配置中使用两个定时器是可能的 配置TIM3以输出一个占空比非常高的PWM信号,在两个周期内从低开始,然后在65536个周期的剩余周期内变高。从它到

Stm32 待命后加入

我在STM32WB上使用LoRaWAN发送一些信息,然后进入待机模式。 问题是在我待机后,一个新的加入就完成了。 我听说我的连接可以使用MIB函数保存在内存中,但我无法正确使用它们并继续进行连接根本不进行连接。。。 有人知道如何使用它们吗?或者在什么地方有好的教程吗?(我暂时什么也没找到) 以下是我实际上正在尝试的: uint32_t last_time = 0; int main(void) { /* USER CODE BEGIN 1 */ data_t data; LoraF

核子STM32F334R8上的STMCubeIDE,新项目:FreeRTOS hardfault

我想用32位微控制器和FreeRTOS做实验。我正在STM32CubeIDE中为我的核子板创建一个新项目,并启用FreeRTOS。我切换HAL使用的计时器(我基本上在看这个视频,但使用另一块NucleoBoard)。当我启动调试模式时,当通过执行osKernelStart()启动任务调度器时,它会立即调用Hardfaulthandler;我不知道为什么。我的任务现在正在做的唯一一件事就是切换LED引脚A5…cubeide 1.4.0在使用FreeRTOS时产生了一个坏代码(NVIC设置,INT

带AS4C4M32S SDRAM的STM32F469只能写入第一个字节

我制作了一个定制板,其特点是STM32F469NI MCU与AS4C4M32S SDRAM耦合 以下是SDRAM定时和寄存器设置信息: hsdram1.Instance = FMC_SDRAM_DEVICE; /* hsdram1.Init */ hsdram1.Init.SDBank = FMC_SDRAM_BANK1; hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8; hsdram1.Init.RowBi

您是否建议CooCox购买Stm32f4探索套件?

我是ARM处理器的新手,我最近买了STM32F4发现工具包。您是否建议我开始使用CooCoz或其他IDE进行编程? 对不起,英语很好。是的,它很容易使用 下载,并嵌入gcc arm 安装并配置CooCox。在“项目->选择工具链路径”中,选择带有工具链的目录,默认情况下为“C:\Program Files\GNU Tools ARM Embedded\4.8 2013q4\bin” 创建新项目,选择stm32f407vg芯片,然后从存储库中选择M4 CMSIS核心、CMSIS引导、RCC、GPI

STM32F4 DMA似乎已溢出

我在使用STM32F4 DMA时遇到问题。 我已在循环模式下设置DMA配置,如下所示: hdma_usart1_rx.Instance = DMA2_Stream2; hdma_usart1_rx.Init.Channel = DMA_CHANNEL_4; hdma_usart1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; hdma_usart1_rx.Init.PeriphInc = DMA_PINC_DISABLE; hdma_usart1_rx.In

Stm32 在HAL库中定义样式

在STM32代码中使用的HAL库中,我们看到使用了如下样式: #define I2C1 ((I2C_TypeDef *) I2C1_Base) 为什么这样使用define 为什么使用指针类型 为什么星星不在括号外 I2C1\u Base在其他地方声明,是一个十六进制数字 (I2C_TypeDef*)将I2C1_Base数字转换为指向I2C_TypeDef的指针,星形必须位于括号内,因为它转换为指针类型,如果它位于括号外,则它将是一个解引用,不会编译 定义允许这样的代码 I2C1-&

STM32 SAI:理解FIFO

据我所知,FIFO(在硬件环境中)是一个缓冲区,将根据先进先出原则进行管理。您可以按顺序将一些位放入其中,然后可以在达到所需阈值时按块读取它们。但我对STM32串行音频接口的FIFO管理感到困惑: 根据数据表,串行音频接口(SAI)支持多达8个字的FIFO。(8x32位)SAI的数据寄存器(SAI_xDR)为1个字(32位)。文件解释了 如果FIFO未满,写入该寄存器将加载FIFO 如果FIFO不为空,则从该寄存器读取的数据将清空FIFO 如何解读 我的猜测是:如果我对此寄存器进行写入访问,它将

如何在usart中断(HAL)中更改全局变量(stm32f407)

我想使用蓝牙模块来控制led的状态。我很确定程序会进入中断,因为它可以发回我用智能手机发送的字符。但是我也改变了代码中的全局变量LEDSTATE,但是LED的状态没有改变,我发现变量在一个监视窗口中保持不变。我很困惑。我试图使用关键字volatile或extern,但没有任何改变 volatile uint8_t LEDSTATE=1; void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { uint8_t k; UNU

Stm32 cortex-M3和cortex-M7的SRAM消耗量

我从M3迁移到M7。M3使用STM32F103VE,具有64 KB的SRAM。M7是STM32F746ZG,具有240KB的SRAM。我把大部分M3代码移到了M7。M7中的以太网功能使用了额外的LWIP。但我发现堆内存不足,并增加如下 #define configTOTAL_HEAP_SIZE ( ( size_t ) (42 * 1024 ) ) 使用M3时,使用了以下堆大小 #define configTOTAL_HEAP_SIZE ( ( size_t ) (15 * 1024 ) )

在STM32H7上从RDP级别1回归到0

我在玩STM32H743(核子板,STM32CubeIDE)上的RDP级别 以下是我测试过的代码: int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USART3_UART_Init(); OBInit.Banks = FLASH_BANK_1; HAL_FLASHEx_OBGetConfig(&OBInit); RdpLevel = OBInit.RDPLev

如何使用STM32芯片读取和写入闪存中的字节

例如,我有一个需要保存到闪存的计数器值,重新启动后,我想再次读取该计数器。我是ARM处理器的新手。我正在使用HAL驱动程序 类似于: s8 adl_flhRead( ascii * Handle, u16 ID, u16 Len, u8 * ReadData ); s8 adl_flhWrite( ascii * Handle, u16 ID, u16 Len, u8 * WriteData ); 您需要对闪存写入的工作原理有一些基本的了解-它不像写入RAM或EEPROM那样简单,在RAM或

Stm32 二进制信号量在创建后解除阻塞?

尝试将STM32F4发现板上的二进制信号量与FreeRTOS一起使用会产生一些奇怪(甚至错误)的结果 首先,FreeRTOS的文档说明: 信号量handle_t xSemaphoreCreateBinary(void) 创建二进制信号量的函数。二进制信号量是 可用或不可用,因此为二进制 信号量是在“empty”状态下创建的,这意味着信号量 必须先给出,然后才能使用 xSemaphoreTake()函数 这很好,因为在这种情况下,一些Thread1会等待前面创建的信号量,直到它解除阻塞(Threa

STM32F103蓝丸ADC示例

在所有主要位置搜索了很长时间(超过3个月)以获取信息并阅读了该芯片的数据表后,我想询问STM32的专家,是否有使用ADC的示例,可能来自arduino IDE的DMA。我确实在这里看到了一些不完整的部分,以及其他编译器/IDE环境的部分。但也许我还没有幸运地找到我所需要的正确信息(连我都能理解)。 非常感谢你的帮助 我想对音频数据进行采样,一个30KHz以上的通道,12位,每次采集16个样本时,会有一个中断来处理数组中的数据 我看过pigOscope代码(它使用analogread)和关于ana

STM32 SWD协议-端口号

我开始在STM32探索板中使用SWD功能。我将openocd跟踪输出重定向到文本文件(因为我找不到任何适用于Linux的好的SWD监视器)。我不知道为什么我只发送了一个字符,却得到了两个字符 在我的输出文件中,每个字符前面都有不同的ASCII码(大多数情况下不可打印)。由于端口的原因,前面的代码是常量。例如: Port 0: 0x01 [Character] 0x01 [Character] etc. Port 1: 0x09 [Character] 0x09 [Character] etc.

STM32F446RE引导加载程序是如何工作的?

我想通过USART将STM32F446RE(在引导加载程序模式下)与我的电脑连接,以便在其上闪存一些HEX文件。 在USB端口和STM(USART1)之间,我得到了一个USB到USART的网桥(CP2102)。 我使用STM32CubeProgrammer将STM32F446RE连接到主机 一切都很顺利,但只有一件事有点棘手 我的问题是,这种联系没有直接建立起来。 我需要大约2或3次尝试,然后才能连接STM。 之后,它就可以正常工作了,没有任何问题 所以我的问题是STM在接收线上等待信号的时间有

Stm32 如何控制JTAG设备将二进制文件写入闪存?

可能会有粗鲁的表达,因为我不是以英语为母语的人。 我希望你能理解 我有一个如下所示的JTAG调试器,我想创建一个应用程序来控制JTAG 我知道有很多工具可以做到这一点。实际上,我也使用了IAR IDE工具,但我想知道IAR编译器如何控制JTAG 如何控制JTAG设备将二进制文件写入闪存? 任何信息都可以。如果你有任何线索,请告诉我 感谢阅读。在JTAG标准中,实现了一种协议,允许与微控制器进行通信,微控制器也使用该协议并具有硬件接口。该协议实现为一个状态机()。JTAG状态机的示意图如所示(即

STM32 Keil-调试时无法访问目标(AT命令UART)

我正在尝试通过UART通信与GSM模块通信。我可以像预期的那样从模块中得到消息。然而,当涉及while循环时(它是空的),调试会话以“cannotaccesstarget”错误结束。一步一步地,我要分享我的代码: 功能1处于发送状态。(注意:有些变量是全局声明的。) 第二个函数是AT_Init函数。它发送AT以获得OK响应。在这一点上,如果我没有错的话,我正在打开ReceiveInterrupt并尝试获取1字节 int AT_Init(UART_HandleTypeDef *huart, ATH

STM32核子-64评估板上uC的电流消耗

我想在我的STM32核子-64评估板核子-L073RZ上测量uC的电流消耗。手册上说,我只需拆下JP6/IDD跳线,然后将针脚连接到安培计: 但是,如果我只是删除JP6跳线无引脚连接,uC仍在运行,我仍然可以通过I2C进行调试/通信。我本以为,如果JP6被移除,uC将不再通电,因此无法访问 谁能解释一下,我的推理错误在哪里 以下是指向相应STM32 Nucleo-64手册第23页的链接: 将USB连接到调试端口是通过调试盒为MCU供电。试着从USB接口上取下左上角一英寸处的两条ST-LINK跳

Uart不';在stm32f4中,从停止模式唤醒后不工作

我正在使用STOP模式来节省电源,同时取消初始化GPIO以实现最大的节能效果。在这种情况下,电流消耗低于1mA。我正在使用UARTRxpin作为外部中断,从STOP模式唤醒电路板。电路板确实会唤醒,但UART或其他外围设备(如DCMI)不工作。下面是我的代码 void MX_GPIO_Deinit() { GPIO_InitTypeDef GPIO_InitStruct; __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_

重置后不久,尝试擦除气缸组1扇区0时,STM32H7挂起

使用STM32H753,我在气缸组1的扇区0(0x0800000)中有引导代码,它检测并跳转到气缸组2的扇区0(0x08100000)中的应用程序代码。在应用程序代码中,我试图擦除和重写气缸组1扇区0,但当我在重置后过早设置FLASHH7\u CR\u START时,MCU锁定(没有故障处理程序输出) 应用程序代码非常复杂,支持芯片的许多功能,但既不支持银行交换,也不支持闪存CRC。已知故障处理程序可以工作 我尝试过的事情: 擦除前,从重置开始忙等待50-100ms;成功 将擦除/重写重定向到

STM32H7和定时器触发DFSDM转换-如何?

在过去的两个晚上,我一直在尝试在STM32H7A3 MPU上设置计时器触发的DFSDM转换,但运气不好。谷歌搜索没有一个完整的例子,可能是因为DFSDM是一个更高级的主题。 目标:每隔1s向过滤器缓冲液中注入N个样品。 我附上了CubeMX设置的屏幕截图。转换在连续模式下按预期工作,因此通道和时钟设置正确。 在代码中,在启动1s计时器(HAL\u TIM\u Base\u Start())之前,我调用HAL\u DFSDM\u filterInjectedmsbsbsstart\u DMA()。

如何将pcan与stm32控制器接口

我想使用pcan USB适配器和带有stm32微控制器的pcan查看器软件(使用cube MX)。我不知道如何建立联系?请帮助我如何将stm32与安装在笔记本电脑上的pcan进行通信。我也需要can传输接收器吗?我也需要终端电阻吗? 请提供连接图。我投票结束这个问题,因为它是关于硬件的,而不是软件的,而且太广泛了。

使用Eclipse在STM32 Nucleo中使用UART传输消息

我正在尝试发送示例文本,以确保UART\u GPIO\u传输功能正常工作。我使用两个字符数组: char aMESSAGE[8] = "WHATEVER"; char bMESSAGE[10] = "0123456789"; 此代码用于UART传输: HAL_UART_Transmit(&UartHandle, &aMESSAGE,10, 0xFFF); HAL_UART_Transmit(&UartHandle, &bMESSAGE,10, 0xFFF);

Stm32 SPI协议程序

嘿,我在我自己的项目中使用ADS1292,我自己对SPI协议感到困惑 我在网上找到了一些代码,我发现它一次发送和接收 例如,我想向从设备发送0xFF 然后它首先发送数据并等待接收 当接收数据时,它发送一个伪字节,然后接收 谁能解释一下他们为什么这么做 uint8_t sEE_ReadByte(void) { return (sEE_SendByte(sEE_DUMMY_BYTE)); } uint8_t sEE_SendByte(uint8_t byte) { /*!< Loop

Stm32 CubeIDE没有激活manage嵌入式软件包(安装Cube.AI)

我不知道有多少人使用STMCubeIDE来编程STM32微秒。显然,这是STMCubeMX工具与IDE的组合 我正在尝试将Cube.AI(AI包)添加到以下教程中,如。在第2.12分钟,您可以看到用户使用菜单中的“管理嵌入式软件包”(以及按钮)将Cube.AI添加到MX中 此按钮不在CubeIDE中,菜单选项处于非活动状态 有人能告诉我如何将Cube.AI安装到CubeIDE吗?第一次单击“检查更新”以确保您的STM32CubeMX是最新的, 然后重新启动并安装CUBE-AI软件包。 您可能需要

在stm32上实现LIN协议

我正在寻找用STM32CUBEMX实现LIN协议,我已经在网上搜索过了,有一些文档和源代码。 是否有人通过STM32CUBEMX实现了LIN总线侦听器项目? 最好的问候硬件支持lin uart硬件模块可以在lin模式下运行。ST的HAL层还具有控制LIN设置的特殊功能。应该很容易让一个监听器运行。我没有发现任何相关的东西,但一些旧的和难以理解的代码

Stm32项目至IAR

我有一个项目,其中包括STM32f4哈尔库和大量的代码。我有这个项目的makefile++ 我想将我的项目导入IAR编译器。我如何做到这一点而不改变我的项目。如何通过在项目中添加一些内容来转换它?您需要在IAR中创建一个新项目,并自己添加所有设置。这是相当直接的,如果你不熟悉IAR,它将帮助你学习。它比makefile简单得多。当然,IAR也可以处理makefiles,但它可能不是最好的起点 将有一些编译器特定的HAL文件,您需要更改启动代码。这些已经在STM32 HAL下载中。您需要在IAR中

如何查看STM32引导加载程序的功能

我正在使用STM32和CC1310,我有两个问题,两个问题相同。 我没有在其中任何一个上编写引导加载程序,我认为我无法获得它们的代码 -我如何放置一个比我的内存大的文件?我猜是压缩,但我不知道是否已经有了内置选项。(我对STM32的数据表有点迷茫,它可能是写的,隐藏在显而易见的地方) -我想知道内存中已经存在的文件是什么,以知道是否需要更新,或者该文件是否是最新的。我正在考虑获取文件名,是否可以将其取回 PS:由于我没有编写引导加载程序,是否有可能以某种方式访问其代码?STM32有一个引导加载程

如何保护stm32f10x的读取闪存

我正在使用STM32F103进行一个项目,我已经完成了固件的开发。我使用ST-Link实用程序将内容下载到微控制器。当我激活芯片上的读取保护时,它停止工作。我需要保护我的固件。有什么问题吗?您必须先解锁闪光灯。STM32 StdPeriph库中应该有一个调用。我的代码如下所示: /* Read protect the flash. NEVER EVER set this to level 2. You can't * write to the chip ever again after t

Stm32 LibOpenCM3向量表是所有阻塞处理程序

这个问题的答案在这里 很好地解释了整个机制,但我得到的是整个向量表填充了阻塞处理程序 我知道这一点,因为我在调试器中看到了它(除了整个事情不起作用之外): 这就好像链接器只是忽略了我定义良好的中断处理函数,例如: void系统勾选处理程序(void) { ... } 作废tim1\U up\U isr(作废) { ... } 我正在使用embitzide,并遵循本教程使libopencm3正常工作(除了本期之外,它确实正常工作) 我对函数名进行了n-fold检查,并尝试了几个在线示例,包括l

STM32:-为什么需要使引脚AF(备用功能)

我想在stm32f103中配置SPI1。为什么需要使引脚AF(备用功能)?它不能仅仅是输入或输出吗?当引脚为AF时,实际会发生什么情况?通过设置备用功能,这些引脚可以连接到多个不同的外围模块,您正在配置IC内的多路复用器,以便将管脚连接到正确的外设块以供使用。输出管脚可以由GPIOODR寄存器或外设控制。一定有办法说谁有控制权。如果您不需要外设的所有输出信号,可以将相应的引脚保留为GPIO,并将该引脚用于其他用途 如果引脚设置为通用输出,则输出电压电平由ODR寄存器确定。外围控制器对输出没有影

Stm32 HAL_SetDate将年份设置为错误值

我将STM32F030RCT6与CubeMX一起使用。设备是一个数据记录器,RTC是不能失败的主要因素。上有关于RTC卷影寄存器的内容 我将CubeMX配置为不生成MX\u RTC\u Init()函数,到目前为止它一直正常工作。(我用的是伦敦证交所) 我需要从GSM时间更新时间/日期,但当我使用HAL_SetDate()将年份设置为18时,经过一小段延迟后,我使用HAL_GetDate()读取数据,sDate.year给了我20。除了年份,其他值都是正确的 我尝试的是: 旧大规模集成电路 w

使用STM32通过LoRaWAN发送消息

我如何通过LoRaWAN发送消息 static void PrepareTxFrame( uint8_t port ) { switch( port ) { case 10: { int pos = 0; pc.printf("Prepare message\n"); #if 0 uint32_t tempValue = ( uint32_t )( LightValue * 1000000.0 ); AppData[0]

为什么RTC不能使用Mbed OS 2在STM32L0上工作?

我正在做一个集成STM32L051R8T6芯片组的项目,我需要RTC功能来实现一些功能,比如慢定时器和睡眠唤醒。但是,如果调用Mbed的set_time()来设置RTC,则程序将挂起或无法按预期执行 在实现任何东西之前,我试图运行Mbed的RTC示例代码:,但我没有运气。RTC似乎是用set_time()设置的,但是,当我调用time(NULL)时,我总是得到初始设置时间。看起来RTC没有计数 我正在使用Mbed的在线编译器编译STM32L053R8的代码,不确定该目标是否与我的非常不同,这就是

如何设置STM32f103c8T Bluepill+;平台&x2B;怎么走?

我一直在想如何将代码上传到STM32103c8T bulepill板。 我的设置是 1-MacOs Catalina 2-STM32103c8T bulepill板 3-板UART USB-TTL CP2012 V3.0 4-平台化IDE 5-STM32立方体程序员软件,通过UART检测并连接到我的主板。 这意味着连接没有问题,但设置平台有问题 顺便说一句,我对ARM世界还不熟悉,我买了这块板来检查它的速度、深度睡眠和中断,我指的是Arduino Uno不能做的所有事情 问题是我不知道如何设置p

如何修复STM32F334K8T6上I2C传输的代码?(不起作用)

几天来,我一直在研究使用I2C控制多个I/O扩展器的操作 我研究了文档并提出了一些代码(我不与HAL合作,因为我对理解寄存器感兴趣) #包括“main.h” #包括“stdio.h” //功能 /***时钟和计时器部分***/ //系统时钟设置 int systemClockInit(){ //开始时钟序列 /* 1-运行HSE+等待准备就绪 2-配置PLL 3-EN PLL+等待就绪 4-设置闪存等待周期 5套母线分压器 6-切换到PLL模式 7-禁用HSI(可选) */ //身体 int w

STM32:USART替代功能不工作

我正在使用stm32f767zi,我正在尝试通过USART外围设备发送测试数据。我在任何设备上都做了相同的配置,但这次它没有输出任何东西。。。我找不到错误,有人能帮忙吗 时钟设置 // Enables TIM8 (Delay), USART1 (STDOUT) RCC->APB2ENR |= (RCC_APB2ENR_TIM8EN | RCC_APB2ENR_USART1EN); // Enables GPIOA, GPIOB, GPIOC, GPIOD, GPIOE, GPIO

STM32L+;ENC28J60(Olimex)

我无法通过Olimex将ENC28J60-H连接到我的STM32L发现。 所以我写代码,读取一个ECON1寄存器,然后将一些值写入其中,然后再次读取。这里有一个问题:当我在这段代码的每一行使用一个分步调试程序(F10)时,一切都很顺利。但当我在这行之后设置断点时,寄存器返回0x00。 我决定,ENC只是没有足够的时间将值写入寄存器。但手册上说,它有自己的晶体振荡器,频率为20或25兆赫(记不清了)。我的频率大约是150千赫。 无论如何,我在每次SPI发送或接收之后设置了一个延迟(循环中的简单计数

stm32 JTAG引脚使用

我使用SWD在stm32芯片中加载固件并进行调试。它使用3个引脚:SWCLK(TCK)、SWDIO(TMS)和GND 我是否可以使用SWD接口中未使用的其他JTAG引脚: (TDI、TDO、TRST) 为了自己的目的,同时保留在芯片中闪烁固件的可能性?嗯,这可能取决于调试器的功能 但总的来说:是的,您可以通过SWD进行flash编程,并将剩余的JTAG引脚用于其他目的。例如,一个Lauterbach调试器可以做到这一点 但是,如果调试器工具支持跟踪记录,我不会在应用程序中使用TDO引脚,因为该引

DMA不工作时的STM32F4 I2C

我正在使用一个STM32F4,我想与我的LSM303加速计通信。因此,我使用的是I2C,仅仅使用I2C就可以了,但当我尝试使用DMA时,它就停止工作了。 当我使用HAL_I2C_Master_Transmit_DMA时,它可以工作,我得到了IRQHandler和。但在那之后我想使用HAL_I2C_Master_Receive_DMA时,它会说I2C的状态还没有准备好。。。 我读到I2C与STM32FX有点混乱,但我不明白为什么它在没有DMA的情况下工作良好 此外,当它点击主站传输DMA的回调I2

STM32L0单片机中使用HAL复位I2C状态

我使用I2C工具测试固件(基于HAL)、I2C、STM32L0 MCU。当我向MCU发送命令(通过i2cset实用程序)时,它会发送一个应答(在i2cget中接收)。它很好用。如果在单个i2cset之后调用i2cget两次,它就会失败(这是预期的行为)。但如果我在那个错误之后执行i2cset,那么它也会失败。因此,接收传输中断(没有激活回调)。怎么能修好呢 目前,HAL\u I2C\u Slave\u Receive\u IT()在HAL\u I2C\u SlaveTxCpltCallback(

如何以编程方式读取STM32的特定CPU类型?

基于这个原因,我很确定这个问题的答案是“你不能”,但无论如何,这是值得一问的。在STM32处理器上,有没有办法确定软件中的特定CPU类型?(即,我想知道我的代码是在STM32F407x、STM32F417x还是STM32F437x上运行)您要查找的信息位于DBGMCU\u IDCODE寄存器中。从那里你可以分辨出你是407还是437,但我不认为你能分辨出你是407还是417 你可以试着给加密单元写信,看看它是否能区分407和417,但我不知道它是否可靠。有一个HAL库可以让你走得更远:

stm32H474I无法调试

我刚买了一个STM32H747I-DISCO板。当我尝试调试它并使用其内部ST链接和STM32Cube IDE将代码加载到它时。它说: 在地址“0xa05f0000”处中断,没有可用的调试信息,或在程序代码之外 当出现一个小选项(查看反汇编)时,它会引导我找到一些汇编代码。我怎样才能修好它?我只是想让简单的led闪烁。老实说,我不知道如何使用这块板。这是我第一次使用它,也许我试图将代码写入错误的内核?或者问题出在调试属性中。我受够了。我怎样才能修好它 编辑:好的,所以我发现它也给出了“程序接收信

STM32内存布局和寻址

有人能解释一下STM32上的内存布局是如何工作的吗?例如,我使用的是STM32F205RCT6,它的闪存容量256Kbyte 如果我理解正确,这意味着我不能使用超过扇区5的内存。,因为我会违反256Kb的大小,对吗 下面的数据表图像() 您可以访问尽可能多的内存 如果您有256Kbyte闪存,则可以通过0x8000000-0x803FFFF访问 擦除扇区时,只能访问扇区0、扇区1、扇区2、扇区3、扇区4和扇区5,因为这些扇区的大小之和为256KB(相当简单的数学) 您必须了解,数据表用于多种型号

Stm32 ST链路错误(开发目标在重置状态下保持)

所以我使用的是STM32F103C8T6板,几天前它还可以正常工作,但最近我尝试用keil vision编译器加载代码,结果显示了以下消息STLINK错误(DEV_TARGET_Hold_处于_RESET状态)。 之后,使用STM32CubeProgrammer也显示了相同的问题,仅使用“热插拔”模式连接 这显然是一个重置错误,但我真的不知道它是怎么发生的,也没有在互联网上找到多少关于这个问题的资源,现在我无法在显示的stm32f103板上下载任何代码 在互联网上研究后发现可能是焊接问题,但

上一页   1   2    3   4   5   6  ... 下一页 最后一页 共 17 页