本帖最后由 captainliuy 于 2015-3-9 11:39 编辑
使用通用定时器Timer4测频,用Cube配置如图,DMA配置选项没有通道4的DMA请求,只有TIM4_UP的DMA请求,生成的代码- DMA_HandleTypeDef hdma_tim4_ch1;
- DMA_HandleTypeDef hdma_tim4_ch2;
- DMA_HandleTypeDef hdma_tim4_ch3;
- DMA_HandleTypeDef hdma_tim4_up;
复制代码- hdma_tim4_up.Instance = DMA1_Channel7;
- hdma_tim4_up.Init.Direction = DMA_PERIPH_TO_MEMORY;
- hdma_tim4_up.Init.PeriphInc = DMA_PINC_DISABLE;
- hdma_tim4_up.Init.MemInc = DMA_MINC_ENABLE;
- hdma_tim4_up.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
- hdma_tim4_up.Init.MemDataAlignment = DMA_MDATAALIGN_WORD;
- hdma_tim4_up.Init.Mode = DMA_NORMAL;
- hdma_tim4_up.Init.Priority = DMA_PRIORITY_LOW;
- HAL_DMA_Init(&hdma_tim4_up);
- __HAL_LINKDMA(htim_base,hdma[TIM_DMA_ID_UPDATE],hdma_tim4_up);
复制代码 更正:初次使用STM32,使用比较随意,这里不是一个Bug,TIM4的通道4不能生成DMA请求,所以Cube中的限制是对的。 |
HAL_TIM_IC_Start_DMA函数在配置中断时通道4的中断请求不支持TIM_DMA_ID_UPDATE,你翻翻代码
那TIM4 通道4的输入捕获不会有DMA请求吗?
按官方手册的说法,应该是这样的