captainliuy 发表于 2015-3-5 10:52:29

STM32CubeF1通用定时器

本帖最后由 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,hdma_tim4_up);更正:初次使用STM32,使用比较随意,这里不是一个Bug,TIM4的通道4不能生成DMA请求,所以Cube中的限制是对的。

captainliuy 发表于 2015-3-5 10:53:48

只能手工修改TIM_DMA_ID_UPDATE为TIM_DMA_ID_CC4来使用TIM4_CH4的DMA请求。

netlhx 发表于 2015-3-5 11:15:57

楼主真神人也

netlhx 发表于 2015-3-5 11:23:33

不过我查了一下手册,似乎TIM4的CH4只支持UP啊

captainliuy 发表于 2015-3-5 14:58:38

netlhx 发表于 2015-3-5 11:23
不过我查了一下手册,似乎TIM4的CH4只支持UP啊

HAL_TIM_IC_Start_DMA函数在配置中断时通道4的中断请求不支持TIM_DMA_ID_UPDATE,你翻翻代码

netlhx 发表于 2015-3-5 16:56:28

captainliuy 发表于 2015-3-5 14:58
HAL_TIM_IC_Start_DMA函数在配置中断时通道4的中断请求不支持TIM_DMA_ID_UPDATE,你翻翻代码 ...


党国特派员 发表于 2015-3-6 09:11:51

学习一下

captainliuy 发表于 2015-3-6 10:57:38

netlhx 发表于 2015-3-5 16:56


那TIM4 通道4的输入捕获不会有DMA请求吗?

netlhx 发表于 2015-3-6 11:04:29

captainliuy 发表于 2015-3-6 10:57
那TIM4 通道4的输入捕获不会有DMA请求吗?

按官方手册的说法,应该是这样的

wambob 发表于 2015-3-8 08:02:28

学习了,谢谢分享
页: [1] 2
查看完整版本: STM32CubeF1通用定时器