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();
}
二、逻辑分析仪验证结果
三、验证成功。