LKS057定时器不能进中断

[复制链接]
382|0
勇往直前NO1 发表于 2025-10-14 09:48 | 显示全部楼层 |阅读模式
, , 定时器, , TI, LKS
  void UTimer_init(void)
{

    TIM_TimerInitTypeDef TIM_InitStruct;

    TIM_TimerCmd(TIMER0, ENABLE); /* Timer0 模块使能 */

    TIM_TimerStrutInit(&TIM_InitStruct);                  /* Timer结构体初始化*/
    TIM_InitStruct.Timer_CH0_WorkMode = TIMER_OPMode_CMP; /* 设置Timer CH0 为比较模式 */
    TIM_InitStruct.Timer_CH0_CapMode = TIMER_CapMode_None;/* 无捕获*/
    TIM_InitStruct.Timer_CH0Output = 0;                   /* 计数器回零时,比较模式输出极性控制 */
    TIM_InitStruct.Timer_CH1_WorkMode = TIMER_OPMode_CMP; /* 设置Timer CH1 为比较模式 */
    TIM_InitStruct.Timer_CH1_CapMode = TIMER_CapMode_None;
    TIM_InitStruct.Timer_CH1Output = 0;                   /* 计数器回零时,比较模式输出极性控制 */
    TIM_InitStruct.Timer_TH = 48000;                                        /* 定时器计数门限初始值1000*/
    TIM_InitStruct.Timer_CMP0 = 24000;                                      /* 设置比较模式的CH0比较初始值24000 */
    TIM_InitStruct.Timer_CMP1 = 24000;                                      /* 设置比较模式的CH1比较初始值24000 */
    TIM_InitStruct.Timer_Filter0 = 0;                                       /* 设置捕捉模式或编码器模式下对应通道的数字滤波值 */
    TIM_InitStruct.Timer_Filter1 = 0;                                     /* 设置捕捉模式或编码器模式下对应通道的数字滤波值 */
    TIM_InitStruct.Timer_ClockDiv = TIM_Clk_Div2;         /* 设置Timer模块时钟2分频系数 */
    TIM_InitStruct.Timer_IRQEna = Timer_IRQEna_CH0 | Timer_IRQEna_CH1 | Timer_IRQEna_Zero; /* 开启Timer模块比较中断和过零中断*/
    TIM_TimerInit(TIMER0, &TIM_InitStruct);

    NVIC_SetPriority(TIMER0_IRQn, 0); //TIMER0中断优先级配置
    NVIC_EnableIRQ(TIMER0_IRQn);      //使能UTimer定时器中断
}


void UTIMER0_IRQHandler(void)
{
    static int Timer_flag = 0, Timer_flag1 = 0;
    if (UTIMER_IF & BIT0) //判断UTimer0是否发生过零中断
    {
        UTIMER_IF = BIT0; //清除UTimer中断标志位
        Timer_flag++;
        if (Timer_flag == 500)
        {
            Timer_flag = 0;
            
        }
    }
    if (UTIMER_IF & BIT1) //判断UTimer0的CH0是否发生比较中断
    {
        UTIMER_IF = BIT1; //清除UTimer中断标志位
        Timer_flag1++;
        if (Timer_flag1 == 500)
        {
            Timer_flag1 = 0;
            
            
            //Invers_GPIO(GPIO0, GPIO_Pin_7); //LED2反转
        }
    }
    if (UTIMER_IF & BIT2) //判断UTimer0的CH1是否发生比较中断
    {
        UTIMER_IF = BIT2; //清除UTimer中断标志位
    }
}














您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部