zoukankan      html  css  js  c++  java
  • [STM32F103]定时器中断

    l 使能定时器时钟。

      RCC_APB1PeriphClockCmd();

    l 初始化定时器,配置ARR,PSC。

      TIM_TimeBaseInit();

    l 开启定时器中断,配置NVIC。

      void TIM_ITConfig();

      NVIC_Init();

    l 使能定时器。

      TIM_Cmd();

    l 编写中断服务函数。

      TIMx_IRQHandler();

     

    l 源代码:

     1 //Tout(溢出时间)=(ARR+1)(PSC+1)/Tclk
     2 //500ms -> (4999+1)( 7199+1)/72000000 = 0.5s = 500ms
     3  void TIM3_Int_Init(u16 arr,u16 psc)
     4 {
     5      TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
     6     NVIC_InitTypeDef NVIC_InitStructure;
     7 
     8     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能
     9     
    10     //定时器TIM3初始化
    11     TIM_TimeBaseStructure.TIM_Period = arr; //设置更新装载值
    12     TIM_TimeBaseStructure.TIM_Prescaler =psc;//设置预分频值
    13     TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割
    14     TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
    15     TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); 
    16  
    17     TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //允许更新中断
    18 
    19     //中断优先级NVIC设置
    20     NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  //TIM3中断
    21     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //0抢占优先级
    22     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //响应优先级
    23     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道势能
    24     NVIC_Init(&NVIC_InitStructure);  //初始化NVIC寄存器
    25 
    26 
    27     TIM_Cmd(TIM3, ENABLE);  //使能TIM                     
    28 }
    29 //定时器3中断服务程序
    30 void TIM3_IRQHandler(void)
    31 {
    32     if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  //检查是否更新中断
    33         {
    34         TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );  //清楚更新中断 
    35         LED1=!LED1;
    36         }
    37 }
    38 int main(void)
    39  { 
    40     delay_init();  
    41     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//抢占和响应优先级的范围0~3
    42     uart_init(115200);
    43      LED_Init();
    44     TIM3_Int_Init(4999,7199); 
    45        while(1)
    46     {
    47         LED0=!LED0;
    48         delay_ms(200);           
    49     }     
    50 }
  • 相关阅读:
    document.load 和document.ready 两个事件的区别
    undefined和null的区别
    点击返回上一个界面事件
    APP上点击事件时 取消点击的阴影
    MUI控制安卓手机自带的返回键 禁止返回
    css过滤镜实现颜色渐变
    CSS3 Media Queries模板:max-width和min-width
    什么是响应式网页设计?
    实用的CSS3-渐变背景色
    Oracle EBS 报表日期格式问题
  • 原文地址:https://www.cnblogs.com/zhaohu/p/9975023.html
Copyright © 2011-2022 走看看