zoukankan      html  css  js  c++  java
  • stm32f103 TIM1初始化--定时器应用

    //TIM1 分频
    #define TIM1_DIV1	  (1-1)
    #define	TIM1_DIV2	  (2-1)
    #define	TIM1_DIV4	  (4-1)
    #define	TIM1_DIV8	  (8-1)
    #define	TIM1_DIV9	  (9-1)
    #define	TIM1_DIV18	  (18-1)
    #define	TIM1_DIV72	  (72-1)
    
    //*************************************
    // 函数名:TIM1_NVIC_Configuration
    // 描述  :TIM1中断优先级配置
    // 输入  :无
    // 输出  :无	
    //***************************************
    void TIM1_NVIC_Configuration(void)
    {
        NVIC_InitTypeDef NVIC_InitStructure;  
    													
        NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn ;	 //TIM1更新中断 
    //	NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQn ; //TIM1比较中断
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; 
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;	
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
    }
    //*************************************
    // 函数名称:TIM1_BASEInitSys
    // 函数功能:TIM1基本初始化	  用作定时器
    // 入口参数:计数个数 分频数
    // 出口参数:无
    // 返回值  :无
    //***************************************
    void TIM1_BASEInitSys(int16_t Tcon,uint16_t psc)
    {
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
        TIM_DeInit(TIM1);            //复位定时器
        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(TIM1,&TIM_TimeBaseStructure);   //初始化定时器的值
    
        TIM_ClearFlag(TIM1,TIM_FLAG_Update);     //清除定时器中断标志 
    //    TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE);  //使能中断
    
     //	通道1 2 3 配置为PWM1模式
    	TIM1->CCMR1 = 0X6C6C ; //
    	TIM1->CCMR2 = 0X006C ;
    // 使能比较通道1 2 3 且1电平为有效电平
    	TIM1->CCER  = 0X0011 ;
    //
    	TIM1->CCR1 = 0 ;
    	TIM1->CCR2 = 0 ;
    	TIM1->CCR3 = 0 ;
    	TIM1->CCR4 = 0 ;
    		 
        TIM_Cmd(TIM1,ENABLE);            //开启时钟
    
    }
    
    //----实例应用-----
    
    	TIM1_NVIC_Configuration() ; //开启更新中断
    	TIM1_BASEInitSys(125,TIM1_DIV72) ; //72M/72=1M  定时125U


  • 相关阅读:
    [原创]ExtAspNet秘密花园(二) — 一切从头开始
    使用领域定义建模语言来提高生产力
    报表控件团队成立了!!
    常见的程序语言分类的区别(简要说明)
    怎样做一名“专业”的程序员?
    推荐一个计数器网站
    在c中嵌入sql操作PostgreSQL
    让Visual C++ 2005 Express Edition也可以开发windows应用程序
    使用PowerDesigner进行代码生成
    sdmagazine与Dr. Dobb's Journal合并了?
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3243901.html
Copyright © 2011-2022 走看看