×
单片机 > 单片机程序设计 > 详情

STM32 TIMx 配置

发布时间:2020-06-03 发布时间:
|
固件库 V3.5  IAR

 

void NVIC_Configuration(void)
{
  /***********************定时器2中断**********************************/
  NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;//使能或者失能指定的 IRQ通道
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3;//设置了成员 NVIC_IRQChannel中的先占优先级
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;//设置了成员 NVIC_IRQChannel中的从优先级
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能初始化命令
  NVIC_Init(&NVIC_InitStructure);//初始化
  /***********************定时器4中断**********************************/
  NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;//使能或者失能指定的 IRQ通道
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;//设置了成员 NVIC_IRQChannel中的先占优先级
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;//设置了成员 NVIC_IRQChannel中的从优先级
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能初始化命令
  NVIC_Init(&NVIC_InitStructure);//初始化

/*******************************************************************************
* 函数名称: Time2_Configuration(void) 
* 函数功能: Time2 设置  计数器
* 参数变量: NONE
* 全局变量: NONE
* 调用函数:
* 修改时间: 
* 版    本:V1.0 
* 状    态:调试完成
*******************************************************************************/
void Time2_Configuration(void)
{
  /************************* 基本定时器模式设置**************************/
      RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2|RCC_APB1Periph_TIM4, ENABLE); //使能 TIM3 时钟
      TIM_DeInit(TIM2);//初始化定时器2
      TIM_DeInit(TIM4);//初始化定时器4
     
      TIM_TimeBaseStructure.TIM_Period = 65535; //初值
      TIM_TimeBaseStructure.TIM_Prescaler = 2; //设置了用来作为 TIMx 时钟频率除数的预分频值
      TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ; //设置了时钟分割1:1
      TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //计数方式  向上计数
      TIM_TimeBaseInit(TIM2, & TIM_TimeBaseStructure); //根据 TIM_TimeBaseInitStruct 中指定的参数初始化 TIMx 的时间基数单位 
      TIM_TimeBaseInit(TIM4, & TIM_TimeBaseStructure); //根据 TIM_TimeBaseInitStruct 中指定的参数初始化 TIMx 的时间基数单位 
      
      GPIO_PinRemapConfig(GPIO_FullRemap_TIM2 ,DISABLE);//不重映射
      TIM_ITConfig(TIM2, TIM_IT_Update ,ENABLE); //使能中断
      TIM_ITConfig(TIM4, TIM_IT_Update ,ENABLE); //使能中断
      TIM_Cmd(TIM2, ENABLE);//使能外设 TIME2
      TIM_Cmd(TIM4, ENABLE);//使能外设 TIME4
}

/*******************************************************************************
* 函数名称: TIM3_IRQHandler(void)
* 函数功能: TIM3 中断函数
* 参数变量: NONE
* 全局变量: NONE
* 调用函数:
* 修改时间: 
* 版    本: V1.0 
* 状    态:
*******************************************************************************/
void TIM3_IRQHandler(void)
{
  if(TIM_GetITStatus(TIM3, TIM_IT_Update ) != RESET)
  {
     TIM_ClearITPendingBit(TIM3, TIM_IT_Update);//清除标志
    //
     
  }
 
}
/*******************************************************************************
* 函数名称: TIM4_IRQHandler(void)
* 函数功能: TIM4 中断函数
* 参数变量: NONE
* 全局变量: NONE
* 调用函数:
* 修改时间: 
* 版    本: V1.0 
* 状    态:
*******************************************************************************/
void TIM4_IRQHandler(void)
{
  if(TIM_GetITStatus(TIM4, TIM_IT_Update ) != RESET)
  {
     TIM_ClearITPendingBit(TIM4, TIM_IT_Update);//清除标志
    //
      countx++;
      if(countx<120){
        GPIO_SetBits(GPIOF,GPIO_Pin_7);
                      
                       }//保存数据//关闭所有的LED指示灯
     else    { 
       GPIO_ResetBits(GPIOF,GPIO_Pin_7);  
     
     }
  }
 
}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
C51 特殊功能寄存器SFR的名称和地址