STM32
直播中

王霞

7年用户 1280经验值
私信 关注
[问答]

STM32F429的定时器有何功能

受到警告
提示: 作者被禁止或删除 内容自动屏蔽

回帖(1)

周润艺

2021-10-25 14:28:39
  F429共有14个定时器
  2个高级 TIM1、TIM8
  10个通用 TIM2~TIM5 TIM9~TIM14
  2个基本 TM6 、TIM7 只有TIM_Prescaler和TIM_Period
  1.配置优先级
  NVIC_InitTypeDef NVIC_InitStructure;
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); 中断组为0
  NVIC_InitStructure.NVIC_IRQChannel = TIM6_DAC_IRQn; 中断来源
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; 抢占优先级
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; 子优先级
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
  2.TIM初始化
  TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE); 初始化时钟
  TIM_TimeBaseStructure.TIM_Period = 5000-1; 自动重装载值(即定时时间)
  TIM_TimeBaseStructure.TIM_Prescaler = 9000-1; 分频系数
  以下在通用和高级定时器中才有
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 计数方式向上计数
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; 分频因子
  TIM_TimeBaseStructure.TIM_RepetitionCounter=1;重复计数
  TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure); 初始化定时器
  TIM_ClearFlag(TIM6, TIM_FLAG_Update);清除定时器中断标志位
  TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);开启定时器更新中断
  TIM_Cmd(BASIC_TIM, ENABLE); 使能定时器
  3.编写中断服务函数
  void TIM6_DAC_IRQHandler (void)
  {
  if ( TIM_GetITStatus( TIM6, TIM_IT_Update) != RESET )
  {
  LED1_TOGGLE;
  TIM_ClearITPendingBit(TIM6 , TIM_IT_Update);
  }
  }
  服务函数名在stsrtup_stm32f429_439xx.s内
举报

更多回帖

发帖
×
20
完善资料,
赚取积分