
配置使用链表配置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); |
STM32双核H7核间通信的方法
yolov5 转onnx 在cubeAI进行部署的时候 部署失败 我想一下大佬们这是什么原因
2.0 CubeIDE大概更新时间?
STM32F407ZGT6的SD卡通过DMA控制时,无法从外部SRAM取数据
最近在学习使用VS code软件+MX配合开发
stm32h750xbh6程序运行在外部qspi flash中为什么lwip读取的数据和发送方的不一样?
STM32H755生成的stm32CubeIde的TouchGFX designer生成代码出错。
STM32H755的TouchGFX不能选择M7内核
STM32H755的TouchGFX如何使能Cortex-M7
TouchGFX Designer如何修改生成工程的脚本