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中断一次


  • 相关阅读:
    深入理解JVM(二)--对象的创建
    深入理解JVM(一) -- 自动内存管理机制
    代理模式(Proxy)
    心知天气数据API 产品的高并发实践
    Jenkins 构建踩坑经历
    log4net SmtpAppender 踩坑总结
    从 ASP.NET Core 2.1 迁移到 2.2 踩坑总结
    在Windows上安装 Consul
    redis-desktop-manager 0.9.3 安装(最后一个免费版本)
    在Windows上安装Redis
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3243848.html
Copyright © 2011-2022 走看看