huangjiayin 发表于 2014-11-25 09:12:16

STM32F030K6的TIM1定时功能不工作

下面的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|=1<<13;
}       


/***********************************
* 名称:   TIM1_IRQHandler()
* 功能:   TIM1溢出中断服务子程序
* 入口参数: 无
* 出口参数: 无
* 说明:               产生1K方波                               
************************************/
void TIM1_IRQHandler(void)
{
         if(TIM1->SR&0X0001)      //溢出中断
           {
                        if((GPIOA->ODR&(1<<6))!=(1<<6))PWM1_high;       
                     elsePWM1_low;                       
          }
          TIM1 ->SR&=~(1<<0);   //清除中断标志位
}

那片清茶 发表于 2014-11-25 09:26:44

有没有仿真器,看看定时中断会不会进

huangjiayin 发表于 2014-11-25 09:29:34

用仿真器查过,进不了void TIM1_IRQHandler(void)函数

netlhx 发表于 2014-11-25 09:32:13

定时器1中断要打开MOE输出,在刹车和死区寄存器里

huangjiayin 发表于 2014-11-25 09:33:23

连第1条指令都不执行,这么怪的。PCLK=HCLK=48Mhz

huangjiayin 发表于 2014-11-25 09:35:22

int main(void)
{
            Stm32_Clock_Init();          //系统时钟设置(最大48MHZ)
          SysTick_init();                  //滴答定时器初始化
          TIM1_Init();                     //TIM1定时器初始化
          TIM3_Init();                      //TIM3定时器初始化
          TIM14_Init();                  //TIM14定时器初始化
          TIM16_Init();                  //TIM16定时器初始化
            GPIO_init();                      //IO口初始化
          buz_set(1,20);                  //上电响1声
            while(1)
连第1个函数Stm32_Clock_Init()都不执行啊

huangjiayin 发表于 2014-11-25 09:46:34

多谢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|=1<<13;            //允许TIM1中断允许
          TIM1->BDTR |=1<<15;                //打开MOE
}       

huangjiayin 发表于 2014-11-25 09:55:05

现可以执行Stm32_Clock_Init() 和SysTick_init();但执行TIM1_Init()函数就死在那里不动
页: [1]
查看完整版本: STM32F030K6的TIM1定时功能不工作