STM32-微项目04-定时器定时中断

一、微项目实现目标:

实现1s一次的中断模块,并在中断函数中实现必要的操作

二、微项目硬件配置需求:

stm32F103C8T6核心板一块

0.96寸OLED显示,用于显示计数

 

 

三、前置知识:

 前置知识主要分为两大块:1,基本的时钟模块;2,中断处理模块

1,基本的时钟模块

①如上图,基本时钟模块主要分为:时钟源设定+时间单元配置 (主要是PSC分频和ARR自动重装器)+定时器中断溢出

时基模块的中断溢出逻辑: 时钟源/(PSC+1)产生新的时钟输入,每次收到一次时钟后,则CNT自增加1,在等于ARR自动重装寄存器时,则产生一次中断输出。并且CNT自动清0处理;

2,中断模块

①在接收到时钟模块产生的中断信号后,保存当前程序运行节点的环境,进行中断服务函数处理,完成中断服务函数后,返回到主程序的断点位置;

②中断需要配置优先级分组,由两部分组成:抢占优先级、次优先级

四、代码逻辑分析:

①开始TIM2时钟RCC

②配置时钟源为内部72MHZ,再配置时基单元

③清空定时器中断溢出标志位

④开启TIM2中断模块

⑤配置TIM2中断优先级分组

⑥初始化NVIC中断模块

⑦开始时钟

⑧配置中断服务函数

五、代码示例:

①开始TIM2时钟RCC

//开启TIM2时钟
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);

②时钟源为内部72MHZ

//配置时钟源,内置72mhz
	TIM_InternalClockConfig(TIM2);

再配置时基单元

	//配置时基单元、
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
	TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;
	TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up ;
	TIM_TimeBaseInitStruct.TIM_Period=10000-1;
	TIM_TimeBaseInitStruct.TIM_Prescaler=7200-1;
	TIM_TimeBaseInitStruct.TIM_RepetitionCounter=0;
	TIM_TimeBaseInit( TIM2,&TIM_TimeBaseInitStruct );

③清空定时器中断溢出标志位,原因是在timebaseinit函数会强制产生一次溢出

//清除中断挂起位
	TIM_ClearFlag(TIM2, TIM_FLAG_Update);

④开启TIM2中断模块

//开启时钟中断
	TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);

⑤配置TIM2中断优先级分组

初始化NVIC中断模块

//配置中断模块
	 NVIC_PriorityGroupConfig( NVIC_PriorityGroup_2);//优先级分组配置
	 NVIC_InitTypeDef NVIC_InitStruct;
	 NVIC_InitStruct.NVIC_IRQChannel= TIM2_IRQn ;
	 NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
	 NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;
	 NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;
	 NVIC_Init(&NVIC_InitStruct);

⑥开始时钟

 //开启时钟
	 TIM_Cmd( TIM2, ENABLE);

⑦配置中断服务函数

注意中断函数名决定了触发中断后执行的函数地址

//中断服务函数
 void TIM2_IRQHandler(void)
 {
	if(TIM_GetITStatus(TIM2, TIM_IT_Update)==SET)
	{
		speed= getspeedn();
	}
	TIM_ClearITPendingBit( TIM2,TIM_IT_Update );
 }
 

主函数部分,按照需求配置

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值