基本定时器 (TIM6)
基本定时器简介
基本定时器 TIM6 包含一个 16 位自动装载计数器。
基本定时器主要特性
16位自动重载向上计数计数器。
16位可编程预分频器。(分频系数可配置为 1到 65536之间的任意值)
产生中断/DMA 的事件如下:
更新事件
定时器中断函数配置
void TIM6_Int_Init(u32 arr,u32 psc)
{
TIM_TimeBaseInitType TIM_TimeBaseStructure;
NVIC_InitType NVIC_InitStructure;
/* PCLK1 = HCLK */
RCC_ConfigPclk1(RCC_HCLK_DIV1);
/* TIM6 clock enable */
RCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_TIM6, ENABLE);
/* Time base configuration */
TIM_InitTimBaseStruct(&TIM_TimeBaseStructure);
TIM_TimeBaseStructure.Period = arr;
TIM_TimeBaseStructure.Prescaler = psc;
TIM_TimeBaseStructure.ClkDiv = 0;
TIM_TimeBaseStructure.CntMode = TIM_CNT_MODE_UP;
TIM_InitTimeBase(TIM6, &TIM_TimeBaseStructure);
/* Enable the TIM2 global Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = LPTIM_TIM6_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
/* Prescaler configuration */
TIM_ConfigPrescaler(TIM6, psc, TIM_PSC_RELOAD_MODE_IMMEDIATE);
/* TIM6 enable update irq */
TIM_ConfigInt(TIM6, TIM_INT_UPDATE, ENABLE);
/* TIM6 enable counter */
TIM_Enable(TIM6, ENABLE);
}
void LPTIM_TIM6_IRQHandler(void)
{
if (TIM_GetIntStatus(TIM6, TIM_INT_UPDATE) != RESET)
{
printf("fengji:%d \r\n");
TIM_ClrIntPendingBit(TIM6, TIM_INT_UPDATE);
}
}
int main(void)
{
TIM6_Int_Init(1000-1,4800-1);//100ms中断一次
uart_init(9600);
while (1)
{
}
}
程序编译后下载用串口助手查看
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)