STM32F030K6的TIM1定时功能不工作

2019-07-14 17:54发布

下面的2个函数在tiM3,TIM14,TIM16运行(定时功能)都没问题,但改用在TIM1的定时功能的话,整个程序不工作,查不出来原因
void TIM1_Init()
{
            RCC->APB2ENR|=1<<11;               //TIM1时钟使能
             TIM1->ARR=24000;                         //定时500us   
            TIM1->PSC=0;                                //1分频(0+1)  
            TIM1->EGR = 0x01;                   //允许产生更新事件
            TIM1->DIER|=1<<0;                  //允许更新中断  
            TIM1->DIER|=1<<6;                  //允许触发中断
            TIM1->CR1|=0x01;                    //使能定时器1
            NVIC->ISER[0]|=1<<13;
}        


/***********************************
* 名称:     TIM1_IRQHandler()
* 功能:     TIM1溢出中断服务子程序
* 入口参数: 无
* 出口参数: 无
* 说明:               产生1K方波                              
************************************/
void TIM1_IRQHandler(void)
{
           if(TIM1->SR&0X0001)      //溢出中断
           {
                        if((GPIOA->ODR&(1<<6))!=(1<<6))  PWM1_high;        
                       else  PWM1_low;                        
          }
          TIM1 ->SR&=~(1<<0);     //清除中断标志位
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
TOPCB
2019-07-15 14:03
多谢netlhx,加了MOE(见下),还是不行,但执行TIM1_Init();函数就死在那里不动,不往下走啊
void TIM1_Init()
{
            RCC->APB2ENR|=1<<11;                     //TIM1时钟使能(一定在这里设置)  
            TIM1->ARR=24000;                         //定时500us   
            TIM1->PSC=0;                             //1分频(0+1)  
            TIM1->EGR = 0x01;                  //允许产生更新事件
            TIM1->DIER|=1<<0;                  //允许更新中断  
            TIM1->DIER|=1<<6;                  //允许触发中断
            TIM1->CR1|=0x01;                   //使能定时器1
            NVIC->ISER[0]|=1<<13;              //允许TIM1中断允许
            TIM1->BDTR |=1<<15;                //打开MOE
}       

一周热门 更多>