STM32 要使用一个定时器需要做哪些工作

1.配置该时钟的中断优先级,NVIC
    NVIC_InitTypeDef NVIC_InitStructure;
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);     //配置NVIC中断优先级编组
    NVIC_InitStructure.NVIC_IRQChannel = TIM6_IRQn;  //TIM6中断
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;  //抢占优先级1级
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  //从优先级3级
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
    NVIC_Init(&NVIC_InitStructure);  //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器
2.初始化该时钟的配置,包括:
开启该定时器的时钟源:RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);
清空配置:TIM_DeInit(TIM6);
配置时钟的自动重装计数器:TIM_TimeBaseStructure.TIM_Period=200;
配置时钟源预分频数:TIM_TimeBaseStructure.TIM_Prescaler= (1600 – 1);
配置时钟分频数:TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
配置计数模式:TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
让配置生效:TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure);
清空溢出中断标志:TIM_ClearFlag(TIM6, TIM_FLAG_Update);
设置溢出中断使能:TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);
启动定时器:TIM_Cmd(TIM6, ENABLE);
3.编写该时钟的中断服务函数
void TIM6_IRQHandler(void)
{
    if(TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源
    {
        TIM_ClearITPendingBit(TIM6, TIM_IT_Update  );  //清除TIMx的中断待处理位:TIM 中断源
        sysClockCount++;                                //用于滚动显示字符
    }
}
来自为知笔记(Wiz)
分享到: 更多
版权申明:

本站保留所有原创文章的版权,本站地址:奔跑的博客[http://www.elecbench.com]

原创文章转载时请注明出处,并添加文章所在页面的链接:http://www.elecbench.com/stm32-%e8%a6%81%e4%bd%bf%e7%94%a8%e4%b8%80%e4%b8%aa%e5%ae%9a%e6%97%b6%e5%99%a8%e9%9c%80%e8%a6%81%e5%81%9a%e5%93%aa%e4%ba%9b%e5%b7%a5%e4%bd%9c/

本站所有 2010年3月4日 以后发表、未标明为“转载”的文章均是本站原创。

发表评论


(设置自己的个性头像)

*

申请属于你的免费顶级域名