完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
考了H7的示例修改G0的,但没实现功能
代码配置 DMA static void MX_DMA_Init(void) { /* DMA controller clock enable */ __HAL_RCC_DMA1_CLK_ENABLE(); hdma_memtomem_dma1_channel1.Instance = DMA1_Channel1; hdma_memtomem_dma1_channel1.Init.Request = DMA_REQUEST_GENERATOR0; hdma_memtomem_dma1_channel1.Init.Direction = DMA_MEMORY_TO_PERIPH; hdma_memtomem_dma1_channel1.Init.PeriphInc = DMA_PINC_DISABLE; hdma_memtomem_dma1_channel1.Init.MemInc = DMA_MINC_ENABLE; hdma_memtomem_dma1_channel1.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD; hdma_memtomem_dma1_channel1.Init.MemDataAlignment = DMA_MDATAALIGN_WORD; hdma_memtomem_dma1_channel1.Init.Mode = DMA_CIRCULAR; hdma_memtomem_dma1_channel1.Init.Priority = DMA_PRIORITY_LOW; if (HAL_DMA_Init( hdma_memtomem_dma1_channel1) != HAL_OK) { Error_Handler(); } /* Select Callbacks functions called after Transfer complete and Transfer error */ //HAL_DMA_RegisterCallback( hdma_memtomem_dma1_channel1, HAL_DMA_XFER_CPLT_CB_ID, TransferComplete); HAL_DMA_RegisterCallback( hdma_memtomem_dma1_channel1, HAL_DMA_XFER_ERROR_CB_ID, TransferError); /* DMA interrupt init */ /* DMA1_Channel1_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 1, 0); HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn); /*##-3- Configure and enable the DMAMUX Request generator ####################*/ dmamux_ReqGenParams.SignalID = HAL_DMAMUX1_REQ_GEN_EXTI0; /* External request signal is EXTI0 signal */ dmamux_ReqGenParams.Polarity = HAL_DMAMUX_REQ_GEN_FALLING;//HAL_DMAMUX_REQ_GEN_RISING; /* External request signal edge is falling */ dmamux_ReqGenParams.RequestNumber = 1; /* 1 requests on each edge of the external request signal */ HAL_DMAEx_ConfigMuxRequestGenerator( hdma_memtomem_dma1_channel1, dmamux_ReqGenParams); /* NVIC configuration for DMAMUX request generator overrun errors*/ HAL_NVIC_SetPriority(DMA1_Ch4_7_DMAMUX1_OVR_IRQn, 2, 0); HAL_NVIC_EnableIRQ(DMA1_Ch4_7_DMAMUX1_OVR_IRQn); } 外部中断口PA0配置 static void EXTI_IRQHandler_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; /* Enable GPIOC clock */ __HAL_RCC_GPIOA_CLK_ENABLE(); /* Configure PA.0 pin as input floating */ GPIO_InitStructure.Mode = GPIO_MODE_IT_FALLING; GPIO_InitStructure.Pull = GPIO_NOPULL; GPIO_InitStructure.Pin = GPIO_PIN_0; HAL_GPIO_Init(GPIOA, GPIO_InitStructure); // HAL_NVIC_SetPriority(EXTI0_1_IRQn, 3, 0); // HAL_NVIC_EnableIRQ(EXTI0_1_IRQn); } 主函数调用 MX_DMA_Init(); /* Infinite loop */ /* USER CODE BEGIN WHILE */ /* Reset transferErrorDetected to 0, it will be set to 1 if a transfer error is detected */ transferErrorDetected = 0; /* Reset transferCompleteDetected to 0, it will be set to 1 if a transfer is correctly completed */ transferCompleteDetected = 0; HAL_DMAEx_EnableMuxRequestGenerator ( hdma_memtomem_dma1_channel1); EXTI_IRQHandler_Config(); if (HAL_DMA_Start_IT( hdma_memtomem_dma1_channel1, (uint32_t) g_uitemp[0], (uint32_t) LED4_GPIO_PORT->ODR, 2) != HAL_OK) { /* Transfer Error */ Error_Handler(); } /* Infinite loop */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ if (transferErrorDetected == 1) { /* Toggle LED4 with a period of 200 ms */ //BSP_LED_Toggle(LED4); transferErrorDetected = 0; } if (transferCompleteDetected == 1) { /* Turn LED4 on*/ //BSP_LED_On(LED4); transferCompleteDetected = 0; } } /* USER CODE END 3 */ |
|
相关推荐
1个回答
|
|
你再核对下DMA相关配置。另外,你确认下是否开启了系统配置控制器的时钟 __HAL_RCC_SYSCFG_CLK_ENABLE();
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
863 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
639 浏览 1 评论
407 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
317 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
724 浏览 2 评论
1466浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
139浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
175浏览 3评论
161浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
156浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-6-25 15:16 , Processed in 0.849126 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191