STM32开发记录-基本定时器的操作

基本定时器6/7就只有定时功能和单脉冲模式,没有PWM,输入捕获。。。其他功能。

首先是激活定时器6

然后配置定时器参数

第一个是预分频器,把定时器时钟源分频

第二个是计数模式,向上计数

第三个计数周期值,当计数器从0计数到周期值则会产生中断,然后从0开始重新计数

第四个是否重装载,这个在基本定时器没用。

第五个是触发输出事件选择

时钟树

定时器时钟频率

现在计算溢出时间

1/(TPCLK/PSC/(PERIOD+1))=1/(64M/64/1000)=1ms

在打开中断功能,并设置好中断优先级

然后是生成代码

我们要使用中断函数的时候必须增加回调函数,回调函数分很多如

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);
void HAL_TIM_PeriodElapsedHalfCpltCallback(TIM_HandleTypeDef *htim);
void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim);
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim);
void HAL_TIM_IC_CaptureHalfCpltCallback(TIM_HandleTypeDef *htim);
void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim);
void HAL_TIM_PWM_PulseFinishedHalfCpltCallback(TIM_HandleTypeDef *htim);
void HAL_TIM_TriggerCallback(TIM_HandleTypeDef *htim);
void HAL_TIM_TriggerHalfCpltCallback(TIM_HandleTypeDef *htim);
void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim);

 我这边使用的是

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance == TIM6)
	{
	//	你要执行的中断指令
	}
}

然后在定时器初始化函数里面启动定时器,启动的方式有三种,看需要选择

/* Blocking mode: Polling */
HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim);
HAL_StatusTypeDef HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim);
/* Non-Blocking mode: Interrupt */
HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim);
HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim);
/* Non-Blocking mode: DMA */
HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, const uint32_t *pData, uint16_t Length);
HAL_StatusTypeDef HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim);

我这边选择已中断方式启动

HAL_TIM_Base_Start_IT(&htim6);	//以中断方式启动定时器

这样基本定时器就配置完了。

                                                                只为记录开发流程,如有错误,前留言指点。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值