STM32的定时器时基功能封装

本文介绍了一种STM32F4定时器的时基功能封装方法,旨在简化周期任务的创建。通过调用单一函数并传入定时时间和回调函数,即可实现周期任务的自动执行。该方法利用定时器的4路捕获比较通道作为中断源,通过动态调整比较值确保任务间隔的精确性。
摘要由CSDN通过智能技术生成

主要想法是封装一个定时器模块。当需要创建一个周期任务时,只须调用一个函数,传入定时时间和回调函数地址就能让周期任务运行起来,不需要管底层配置。 

我的方法是利用STM32F4某个定时器的4路捕获比较通道来作为中断源,通过即时更改比较值来保证相同的间隔时间。

talk is cheap,码来了:


bsp_timer.c

#include "bsp_timer.h"
#include "util.h"

Timer timer[TIMER_NUM];

//当前定时器的个数
static uint8_t curr_timer_num = 0;	

//用捕获比较通道定时,一共有4个通道,所以最多可以有4个独立定时器
void TIM14_init(void)
{
	TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14, ENABLE);
	
	TIM_TimeBaseStructure.TIM_Period = 0XFFFF;    
    TIM_TimeBaseStructure.TIM_Prescaler = 8400-1;              
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;             
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIM14, &TIM_TimeBaseStructure);  
    TIM_Cmd (TIM14, ENABLE);
	nvic_config(TIM8_TRG_COM_TIM14_IRQn, 3);	
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值