STM32F030CT86定时器15 10ms周期验证

一、程序处理如下
static void TIM15_Init(void)
{        
    TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;    

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM15, ENABLE);    //timer15时钟使能,APB2时钟48M    
    
    TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; //分频系数为1
    TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数
    TIM_TimeBaseInitStructure.TIM_Period = 10000 - 1; //10ms 
    TIM_TimeBaseInitStructure.TIM_Prescaler = 47;//48MHZ 1us
    TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
    TIM_TimeBaseInit(TIM15, &TIM_TimeBaseInitStructure);

    TIM_ClearITPendingBit(TIM15,TIM_IT_Update);
    TIM_ITConfig(TIM15,TIM_IT_Update,ENABLE); //允许定时器15更新中断              
    
    NVIC_InitStructure.NVIC_IRQChannel = TIM15_IRQn; //定时器15中断
    NVIC_InitStructure.NVIC_IRQChannelPriority = 1; //优先级1
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);    
    NVIC_EnableIRQ(TIM15_IRQn);    

    TIM_Cmd(TIM15,ENABLE); //使能定时器15        
}


void TIM15_IRQHandler(void)
{                
    if (TIM_GetITStatus(TIM15,TIM_IT_Update) != RESET) {
        if (IS_CTRL_ON(TEST_PIN)) {
            CTRL_OFF(TEST_PIN);
        } else {
            CTRL_ON(TEST_PIN);
        }
    }
    TIM_ClearITPendingBit(TIM15,TIM_IT_Update);//清除中断标志位
}


void test_init(void)
{
    TIM15_Init();
}

二、逻辑分析仪验证结果


STM32F030CT86定时器15 10ms周期验证

三、验证成功。