6.国民技术N32G45X例程之- 高级定时器中断
前言
6.国民技术N32G45X例程之- 高级定时器中断实现1MS精确定时,独立工程原创。
提示:以下是本篇文章正文内容,下面案例可供参考
一、使用步骤
1.使能定时器TIM1时钟
代码如下(示例):
void RCC_Configuration(void)
{
RCC_ConfigPclk2(RCC_HCLK_DIV1);
/* 配置定时器TIM1时钟 */
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_TIM1, ENABLE);
}
2.使能定时器TIM1中断
这里要注意一点,就是中断分组
代码如下(示例):
void NVIC_Configuration(void)
{
NVIC_InitType NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
/* 使能定时器TIM1中断 */
NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 5;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
3.配置定时器TIM1
代码如下(示例):
void Timer1_Init(u16 arr,u16 psc)
{
TIM_TimeBaseInitType TIM_TimeBaseStructure;
RCC_Configuration();
NVIC_Configuration();
/* 配置定时器TIM1 */
TIM_TimeBaseStructure.Period = arr;
TIM_TimeBaseStructure.Prescaler = psc;
TIM_TimeBaseStructure.ClkDiv = 0;
TIM_TimeBaseStructure.CntMode = TIM_CNT_MODE_UP;
TIM_InitTimeBase(TIM1, &TIM_TimeBaseStructure);
/* 定时器TIM1向上计时 */
TIM_ConfigInt(TIM1, TIM_INT_UPDATE, ENABLE);
/* 使能定时器TIM1 */
TIM_Enable(TIM1, ENABLE);
}
4.定时器1中断服务程序
代码如下(示例):
/*定时器1中断服务程序*/
void TIM1_UP_IRQHandler(void)
{
if(TIM1->STS&0X0001)//溢出中断
{
LED_RED_BL;
}
TIM1->STS&=~(1<<0);//清除中断标志位
}
5.初始化高级定时器1
代码如下(示例):
Timer1_Init((1000-1),(144-1));
二,软件下载
6.国民技术N32G45X例程之- 高级定时器中断https://download.csdn.net/download/suqingxiao/71888819