stm8l TIM2定时器使用
2021-10-20 来源:eefocus
1、配置定时器
void TIM2_Config(void)
{
TIM2_DeInit();
CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE);
TIM2_TimeBaseInit(TIM2_Prescaler_1, TIM2_CounterMode_Up, 128);
TIM2_SetCounter(128);
TIM2_ITConfig(TIM2_IT_Update, ENABLE);
TIM2_ARRPreloadConfig(ENABLE);
TIM2_Cmd(ENABLE); //计数器使能,开始计数
}
2、配置系统时钟CLK
void CLK_Config(void)
{
CLK_DeInit();
CLK_HSEConfig(CLK_HSE_OFF);
//启动LSI时钟源
CLK_LSICmd(ENABLE);
//使能时钟切换
CLK_SYSCLKSourceSwitchCmd(ENABLE);
//选择内部低速时钟作为时钟源
CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSI);
//设置系统时钟分频
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
//等待时钟稳定
while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_LSI)
{}
}
3、系统初始化配置
void SYSTEM_Config(void)
{
/* 关全局中断 */
disableInterrupts();
/* 时钟配置 */
CLK_Config();
/* TIM2配置 */
TIM2_Config();
/* 使能中断 */
enableInterrupts();
}
3、main函数
void main(void)
{
SYSTEM_Config();
while (1)
{
;
}
}
5、中断处理
/**
* @brief TIM2 Update/Overflow/Trigger/Break /USART2 TX Interrupt routine.
* @param None
* @retval None
*/
INTERRUPT_HANDLER(TIM2_UPD_OVF_TRG_BRK_USART2_TX_IRQHandler,19)
{
/* In order to detect unexpected events during development,
it is recommended to set a breakpoint on the following instruction.
*/
TIM2_ClearFlag(TIM2_FLAG_Update);
g_uiTim2Count++;
}