STM32学习笔记-定时器中断
2018-03-18 13:07
204 查看
首先感谢河北科技大学航模协会-能给我这样的学习机会-感谢那些带我们教我们的学长学姐们.
如果我们想要去每隔一段时间去做一件事,或者说特定的时间去做某件事,但是我们所有的精力不能放在计时上,我们有主要的事情要做,但是我们还必须每隔一段时间就要做另外一件事.我们就必须找一个可以计时的东西,它的工作就是每隔特定的时间告诉我们一声.这样,我们既可以做那个主要的事,每隔一段时间需要做的事也可以做,这个计时的东西就是定时器.
与配置io口类似,定时器的初始化也是给一个结构体变量赋值,把参数传送给初始化函数.
下面是定时器3初始化的一个例子void tim3(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
TIM_TimeBaseStructure.TIM_Period =1000-1;
TIM_TimeBaseStructure.TIM_Prescaler = 35999;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
TIM_Cmd(TIM3,ENABLE);
}TIM_TimeBaseInitTypeDef结构体变量类型名
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);打开apb1总线上的定时器3的时钟
TIM_TimeBaseStructure.TIM_Period =1000-1;分频系数(将主频分割)个人理解
TIM_TimeBaseStructure.TIM_Prescaler = 35999;计数溢出值(计数到这个值产生消息)个人理解
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;时钟分频因子 不懂 默认0即可这个宏的值就是0
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;计数模式 向上计数 其他计数模式见手册
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);传入结构体地址,完成基本配置
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);打开定时器3中断
TIM_Cmd(TIM3,ENABLE);使能定时器3
void tim3youxianji(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructure.NVIC_IRQChannel =TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}中断优先级配置,与外部中断相同,将中断通道改为定时器3即可NVIC_InitStructure.NVIC_IRQChannel =TIM3_IRQn;void TIM3_IRQHandler(void)
{
.......;
TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
}中断服务函数,每产生一次计时消息进入一次中断服务函数.
计时消息计算公式 计时频率=处理器主频/分频系数/计数溢出值 计时频率即进入中断的频率
声明:转载请注明出处,本人入门级菜鸟,内容大多学习于网络,存在问题太多不一一列举,大佬多多指教.本人QQ941131649
如果我们想要去每隔一段时间去做一件事,或者说特定的时间去做某件事,但是我们所有的精力不能放在计时上,我们有主要的事情要做,但是我们还必须每隔一段时间就要做另外一件事.我们就必须找一个可以计时的东西,它的工作就是每隔特定的时间告诉我们一声.这样,我们既可以做那个主要的事,每隔一段时间需要做的事也可以做,这个计时的东西就是定时器.
与配置io口类似,定时器的初始化也是给一个结构体变量赋值,把参数传送给初始化函数.
下面是定时器3初始化的一个例子void tim3(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
TIM_TimeBaseStructure.TIM_Period =1000-1;
TIM_TimeBaseStructure.TIM_Prescaler = 35999;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
TIM_Cmd(TIM3,ENABLE);
}TIM_TimeBaseInitTypeDef结构体变量类型名
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);打开apb1总线上的定时器3的时钟
TIM_TimeBaseStructure.TIM_Period =1000-1;分频系数(将主频分割)个人理解
TIM_TimeBaseStructure.TIM_Prescaler = 35999;计数溢出值(计数到这个值产生消息)个人理解
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;时钟分频因子 不懂 默认0即可这个宏的值就是0
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;计数模式 向上计数 其他计数模式见手册
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);传入结构体地址,完成基本配置
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);打开定时器3中断
TIM_Cmd(TIM3,ENABLE);使能定时器3
void tim3youxianji(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructure.NVIC_IRQChannel =TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}中断优先级配置,与外部中断相同,将中断通道改为定时器3即可NVIC_InitStructure.NVIC_IRQChannel =TIM3_IRQn;void TIM3_IRQHandler(void)
{
.......;
TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
}中断服务函数,每产生一次计时消息进入一次中断服务函数.
计时消息计算公式 计时频率=处理器主频/分频系数/计数溢出值 计时频率即进入中断的频率
声明:转载请注明出处,本人入门级菜鸟,内容大多学习于网络,存在问题太多不一一列举,大佬多多指教.本人QQ941131649
相关文章推荐
- STM32学习笔记6-定时器中断
- stm32学习笔记——入门定时器中断
- STM32学习笔记6-定时器中断
- STM32学习笔记——定时器中断(向原子哥学习)
- cortex_m3_stm32嵌入式学习笔记(八):定时器中断实验(定时器的更新中断)
- [转]STM32学习笔记6-定时器中断
- STM32学习笔记-外部中断
- STM32学习及应用笔记一:SysTick定时器学习及应用
- STM32 CortexM3 中断 学习笔记!
- stm32寄存器版学习笔记04 定时计数器中断
- STM32-外部中断学习笔记
- cortex_m3_stm32嵌入式学习笔记(十四):RTC实时时钟(秒中断)
- 嵌入式系统学习——STM32之UCOS-III中断和时间管理及软件定时器
- STM32学习笔记:外部中断的使用
- STM32-外部中断学习笔记
- 单片机学习笔记--外部中断,定时器,串口中断
- STM32学习笔记4(TIM32位定时器的实现)
- stm32通用定时器(TIMx)学习笔记
- R2 STM32基本定时器之中断笔记-TIM
- stm32学习笔记之USB中断配置初始化函数