欢迎光临散文网 会员登陆 & 注册

江科大学习笔记 _5.外部时钟源中断配置

2023-06-09 12:42 作者:自闭选手的Z23  | 我要投稿


 



外部时钟计数:

1. RCC时钟开启

Timer2挂载在APB1总线上

RCC_APB1PeriphClockCmd(RCC_APB1ENR_TIM2EN, ENABLE);

 

2. 选择时基单元的时钟源

TIM_ETRClockMode2Config(TIM2,TIM_ExtTRGPSC_OFF,TIM_ExtTRGPolarity_NonInverted,0x0F); //使用外部时钟源PA0

定时器2的外部输入为PA0引脚,STM32定义,可以查看手册

 

所以 GPIO PA0也要配置

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

    

    GPIO_InitTypeDef GPIO_InitStruct;

    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;

    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;

    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOA,&GPIO_InitStruct);

 

3. 配置时基单元

    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;

    TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;//滤波分频

    TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;

    TIM_TimeBaseInitStruct.TIM_Period = 10000 - 1;

    TIM_TimeBaseInitStruct.TIM_Prescaler = 7200 - 1;

    TIM_TimeBaseInitStruct.TIM_RepetitionCounter = 0;

TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStruct);

 

 TIM_ClearFlag(TIM2, TIM_FLAG_Update);//防止初始化完就进中断的问题

 

4. 配置输出中断控制,允许更新中断到输出NVIC

TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);

 

 

5. 配置NVIC,打开定时器同通道,优先级

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

    

    NVIC_InitTypeDef NVIC_InitStruct;

    NVIC_InitStruct.NVIC_IRQChannel =  TIM2_IRQn;

    NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;

    NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 2;

    NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;

NVIC_Init(&NVIC_InitStruct);

 

6. 运行控制

TIM_Cmd(TIM2,ENABLE);

 

 

中断服务函数

void TIM2_IRQHandler(void)

{

    

    if(TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)

    {

        

        Num++;

        

        TIM_ClearITPendingBit(TIM2, TIM_IT_Update);

    }

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


江科大学习笔记 _5.外部时钟源中断配置的评论 (共 条)

分享到微博请遵守国家法律