zoukankan      html  css  js  c++  java
  • STM32F103 TIM3定时器初始化程序

    //TIM3 分频
    #define	TIM3_DIV1	  (1-1)
    #define	TIM3_DIV18	  (18-1)
    #define	TIM3_DIV72	  (72-1)
    
    
    //*************************************
    // 函数名:TIM3_NVIC_Configuration
    // 描述  :TIM3中断优先级配置
    // 输入  :无
    // 输出  :无
     	
    //*************************************
    void TIM3_NVIC_Configuration(void)
    {
        NVIC_InitTypeDef NVIC_InitStructure; 
        												
        NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;	  //选择中断通道
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //抢占式优先级别值
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;	//响应式中断优先级别值
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;	   //中断使能值
        NVIC_Init(&NVIC_InitStructure);						//根据上述值初始化中断级别
    }
    //*************************************
    // 函数名称:TIM3_BASEInit
    // 函数功能:初始化TIM3 为定时模式
    // 入口参数:计数个数 分频数
    // 出口参数:无
    // 返回值  :无
    //***************************************
    void TIM3_BASEInit(uint16_t Tcon,uint16_t psc)
    {
    
      	RCC->APB1ENR |= 1<<1; //定时器3时钟使能
    	TIM3->CR1 |= 1<<7 ;  //设置自动重装载允许
    	TIM3->CR1 &= ~(1<<4) ;  //设置向上计数 
    	TIM3->ARR = Tcon ; //定时器计数次数
    	TIM3->PSC = psc ;  //设置分频数
    	TIM3->SR  &= ~0x0001;  //清除溢出标志
    //	TIM3->DIER |= 1<<6 ;   //允许触发中断
    //	TIM3->EGR |= 0X0001 ;	  //允许产生更新事件
    	TIM3->DIER |= 0X0001 ;   //允许更新中断
    	TIM3->CR1 |= 0X0001 ;   //允许计数
    
    }
    //===系统库操作初始化TIM3=====
    void TIM3_BASEInitSys(int16_t Tcon,uint16_t psc)
    {
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
        TIM_DeInit(TIM3);            //复位定时器
        TIM_TimeBaseStructure.TIM_Period = Tcon;  //定时器重装载值
        TIM_TimeBaseStructure.TIM_Prescaler = psc ;         //时钟预分频
        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;  // 时钟分频
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数模式
        TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);   //初始化定时器的值
    
        TIM_ClearFlag(TIM3,TIM_FLAG_Update);    //清除定时器中断标志 
        TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);  //使能中断
        TIM_Cmd(TIM3,ENABLE);            //开启时钟
    
    }
    
    
    
    
    //---实例应用----
    	//用寄存器操作
    	TIM3_BASEInit(125,TIM3_DIV72) ; //72M/72 = 1M	125u中断一次
    
    	//用系统库操作
    //	TIM3_BASEInitSys(125,TIM3_DIV72) ; 	//72M/72 = 1M	125u中断一次


  • 相关阅读:
    关于我的新博客
    我今天申请了blog!
    Win XP / Win 7上配置eclipse+CDT+MinGW,和相关问题的解决办法
    Android app Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER
    用adb安装程序,和在电脑和设备之间传文件
    eclipse 断点调试快捷键(转)
    找不到设备,device not found错误
    eclipse里面的C printf 先输出到缓冲区
    Eclipse Outline 图示
    如何获得Android系统版本
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3243848.html
Copyright © 2011-2022 走看看