本帖最后由 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请求吗?
按官方手册的说法,应该是这样的