你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

smt32h5 gpdma LL库无法初始化?

[复制链接]
ROYIOU 提问时间:2025-9-7 16:42 / 未解决

配置使用链表配置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);

收藏 评论0 发布时间:2025-9-7 16:42

举报

0个回答

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版