
配置使用链表配置gpdma,USEF一直置1。SDR、ADR(源、目的地址)寄存器为空。是我哪里少配置了吗?代码如下: LL_DMA_InitLinkedListTypeDef DMA_InitLinkedListStruct = {0}; / Peripheral clock enable / LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPDMA1); / GPDMA1 interrupt Init / NVIC_SetPriority(GPDMA1_Channel0_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); NVIC_EnableIRQ(GPDMA1_Channel0_IRQn); / USER CODE BEGIN GPDMA1_Init 1 / / USER CODE END GPDMA1_Init 1 / / USER CODE BEGIN GPDMA1_Init 2 / LL_DMA_InitNodeTypeDef node = {0}; / LLI0:完整配置,写入 Buffer A / node.Request = LL_GPDMA1_REQUEST_SPI1_RX; node.Direction = LL_DMA_DIRECTION_PERIPH_TO_MEMORY; node.SrcAddress = (uint32_t)&SPI1->RXDR; node.DestAddress = (uint32_t)ADC_Buf1; node.BlkDataLength = Buf_Size * 2U; node.SrcDataWidth = LL_DMA_SRC_DATAWIDTH_HALFWORD; node.DestDataWidth = LL_DMA_DEST_DATAWIDTH_HALFWORD; node.SrcIncMode = LL_DMA_SRC_FIXED; node.DestIncMode = LL_DMA_DEST_INCREMENT; node.UpdateRegisters = LL_DMA_UPDATE_CTR1|LL_DMA_UPDATE_CTR2|LL_DMA_UPDATE_CSAR|LL_DMA_UPDATE_CDAR; node.NodeType = LL_DMA_GPDMA_LINEAR_NODE; node.SrcAllocatedPort = LL_DMA_SRC_ALLOCATED_PORT0; node.DestAllocatedPort = LL_DMA_DEST_ALLOCATED_PORT1; node.SrcBurstLength = 2; node.DestBurstLength = 2; node.BlkHWRequest = LL_DMA_HWREQUEST_SINGLEBURST; node.TransferEventMode = LL_DMA_TCEM_BLK_TRANSFER; node.UpdateRegisters = LL_DMA_UPDATE_CTR1 | LL_DMA_UPDATE_CTR2 | LL_DMA_UPDATE_CSAR | LL_DMA_UPDATE_CDAR; node.NodeType = LL_DMA_GPDMA_LINEAR_NODE; LL_DMA_CreateLinkNode(&node, &LLI0); / LLI1:仅重设 DestAddress 指向 Buffer B / // node.SrcAddress = (uint32_t)&SPI1->RXDR; node.DestAddress = (uint32_t)ADC_Buf2; node.BlkDataLength = Buf_Size; LL_DMA_CreateLinkNode(&node, &LLI1); / 链表连接:LLI0 -> LLI1 -> LLI0 / LL_DMA_ConnectLinkNode(&LLI0, LL_DMA_CLLR_OFFSET1, &LLI1, LL_DMA_CLLR_OFFSET1); LL_DMA_ConnectLinkNode(&LLI1, LL_DMA_CLLR_OFFSET1, &LLI0, LL_DMA_CLLR_OFFSET1); / 设置链表基地址 & 初始化通道 / LL_DMA_SetLinkedListBaseAddr(GPDMA1, LL_DMA_CHANNEL_0, (uint32_t)&LLI0); DMA_InitLinkedListStruct.Priority = LL_DMA_HIGH_PRIORITY; DMA_InitLinkedListStruct.LinkStepMode = LL_DMA_LSM_1LINK_EXECUTION; DMA_InitLinkedListStruct.LinkAllocatedPort = LL_DMA_LINK_ALLOCATED_PORT0; DMA_InitLinkedListStruct.TransferEventMode = LL_DMA_TCEM_LAST_LLITEM_TRANSFER; LL_DMA_List_Init(GPDMA1, LL_DMA_CHANNEL_0, &DMA_InitLinkedListStruct); / 开启 Half-Transfer 和 Transfer-Complete 事件 / LL_DMA_EnableIT_HT(GPDMA1, LL_DMA_CHANNEL_0); LL_DMA_EnableIT_TC(GPDMA1, LL_DMA_CHANNEL_0); / 启用 DMA 通道 / LL_DMA_EnableChannel(GPDMA1, LL_DMA_CHANNEL_0); / 启用外设 DMA 请求并启动外设(如 ADC) / LL_SPI_EnableDMAReq_RX(SPI1); LL_SPI_Enable(SPI1); |
STM32H723系列FDCAN的CCCR.EFBI位如何验证?
怎么将keil工程更换为vscode工具链?
Nucleo STM32H723ZG 以太网 用CubeMX配置完卡在在mem_init()为什么?
stm32cubemx “enter myST account information”无反应,无法下载软件包
在哪里可以下到文件 stm32l4xx_ll_flash.h 和 stm32l4xx_ll_flash.c
ST MotorControl Workbench 生成代码过程中报错Java的非法反射警告
STM32G431 用MCSDK5.4.8 进行PMSM永磁同步电机FOC控制,转速上升到某一值(3500rpm)无法继续上升,上不去
NanoEdgeAI Studio在keil5上出现的问题
关于使用FMC功能中的NAND FLASH上的R/B引脚
请教下,使用 filex 文件系统需要支持中文的目录及文件名要怎么配置呀 ?
因此有小伙伴认为先用HAL 库做好初始化,
简单调一下然后再对比和调整LL库。
这样就很容易成功。