一、将定时器相关的.c和.h添加到新建的工程中
添加文件路径:
二、对.c和.h文件进行代码编写
打开timer.h文件,写一下防止重复包含的宏定义
#ifndef __TIMER_H
#define __TIMER_H
#endif
打开timer.c文件,包含一下STM32的头文件:
“右键单机”--->Insert '#include file'--->stm32f10x.h //Device header
编写函数框架
void Timer_Init(void)
{
//定时器相关的库函数声明在stm32f10x_tim.h文件内
//打开总线时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
//让控制器选择RCC时钟,使用内部RCC时钟源
TIM_InternalClockConfig(TIM2);
//初始化定时器的时基单元相关参数
TIM_TimeBaseInitTypeDef TIM_BaseInitStructure;
TIM_BaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; //时钟分割,是时钟源滤波相关
TIM_BaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //计数器的模式,有向上对齐、向下对齐、中央对齐计数模式
TIM_BaseInitStructure.TIM_Period = 50000-1; //自动重装载值 取值范围0~65535
TIM_BaseInitStructure.TIM_Prescaler = 7200-1; //预分频 取值范围0~65535
TIM_BaseInitStructure.TIM_RepetitionCounter = 0; //高级定时器
//初始化定时器的时基单元相关参数所用的函数TIM_TimeBaseInit
TIM_TimeBaseInit(TIM2,&TIM_BaseInitStructure);
//以上配置开中断之后会立即进入一次中断,如果不想这样需要我们清除一下中断标志位
TIM_ClearFlag(TIM2,TIM_FLAG_Update);
//开启中断
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
/*
*开启中断只是将中断输入进内核,因为内核内部中断都是有NVIC控制,所以还需要配置NVIC
*NVIC分组设置是对所有中断有效的,也就是整个工程只能配置一次
*设置优先级分组
*/
//NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
//NVIC是内核外设,STM32把库函数放到了MISC文件内,打开misc.h拉到最后就可以找到相关库函数声明
//
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; //中断通道选择 后缀选择看图
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //控制通道是否开启
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //抢占优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //响应优先级
//初始化NVIC
NVIC_Init(&NVIC_InitStructure);
//开启定时器
TIM_Cmd(TIM2,ENABLE);
}
/*
*中断入口函数名在startup这个启动文件中有定义,不能随便写
*/
void TIM2_IRQHandler(void)
{
if(TIM_GetITStatus(TIM2,TIM_IT_Update) == SET)//判断挂起标志位
{
//手动清除标志位
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
count=0;
if(count==0)
{
OLED_ShowString(posName[count], 0, dispName[count], 16);
OLED_ShowString(posVal[count], 0, dispVal[count], 16);
OLED_ShowString(posName[count+1], 2, dispName[count+1], 16);
OLED_ShowString(posVal[count+1], 2, dispVal[count+1], 16);
}
}
TIM_Cmd(TIM2,DISABLE);
}
将函数声明添加到timer.h文件
标签:TIM2,NVIC,定时器,配置,count,STM32,TIM,BaseInitStructure From: https://blog.csdn.net/ciweic/article/details/142935971