【STM32】定时器定时中断&定时器外部时钟(江科大)

一、定时器定时中断

在这里插入图片描述
在这里插入图片描述

初始化定时器

在这里插入图片描述
恢复缺省配置
在这里插入图片描述
把结构体变量赋一个默认值
在这里插入图片描述
写预分频值的函数
在这里插入图片描述
用来改变计数器的计数模式,第二个参数选择新的计数器模式
在这里插入图片描述
自动重装器预装功能配置
在这里插入图片描述
给计数器写入一个值
在这里插入图片描述
给自动重装寄存器写入一个值
在这里插入图片描述
获取当前计数器的值
在这里插入图片描述
获取当前的预分频器的值
在这里插入图片描述
用来获取标志位和清除标志位的

1.开启RCC时钟

打开时钟后,定时器的基准时钟和整个外设的工作时钟就会同时打开
在这里插入图片描述

2.选择时基单元的时钟源

对于定时中断就选择内部时钟源
在这里插入图片描述

在这里插入图片描述
这六个函数对应图中时基单元的时钟选择部分,可以选择RCC内部时钟、ETR外部时钟、ITRx其他定时器、TIx捕获通道这些
在这里插入图片描述
选择内部时钟
在这里插入图片描述
选择ITRx其他定时器的时钟,第一个参数选择要配置的定时器,第二个参数选择要接入哪个其他的定时器
在这里插入图片描述
选择TIx捕获通道的时钟,第二个参数选择TIx具体的某个引脚,第三第四个参数,输入的极性和滤波器,对于外部引脚的波形,一般都会有极性选择和滤波器
在这里插入图片描述
选择ETR通过外部时钟模式1输入的时钟,第一个参数,外部触发预分频器,可以对ETR的外部时钟再提前做一个分频,第二第三个参数,极性和滤波器
在这里插入图片描述
选择ETR通过外部时钟模式2输入的时钟,第一个参数,外部触发预分频器,可以对ETR的外部时钟再提前做一个分频,第二第三个参数,极性和滤波器
在这里插入图片描述

3.配置时基单元

包括预分频器、自动重装器、计数模式等等,用一个结构体就可配置好
在这里插入图片描述
在这里插入图片描述
时基单元初始化,第一个参数TIMx选择某个定时器,第二个参数是结构体,包含了配置时基单元的一些参数

4.配置输出中断控制

允许更新中断输出到NVIC
在这里插入图片描述
在这里插入图片描述
使能中断输出信号(对应图中中断输出控制),第一个参数选择定时器,第二个参数TIM_IT,选择要配置哪个中断输出,第三个参数NewState,新的状态,使能还是失能

5.配置NVIC

在NVIC中打开定时器中断的通道,并分配一个优先级
用上一节的NVIC_Init函数
在这里插入图片描述

6.运行控制

整个模块配置完成后,需要使能一下计数器,否则计数器不会运行,当定时器使能后,计数器开始计数,当计数器更新时,触发中断,最后再写一个定时器的中断函数,这样这个中断函数每隔一段时间就能自动执行一次了
在这里插入图片描述
在这里插入图片描述
用来使能计数器的(对应图中的运行控制),第一个参数TIMx选择某个定时器,第二个参数NewState新的状态,也就是使能还是失能。使能,计数器可以运行;失能,计数器不运行


在这里插入图片描述


Timer.c

#include "stm32f10x.h"                  // Device header

/**
  * 函    数:定时中断初始化
  * 参    数:无
  * 返 回 值:无
  */
void Timer_Init(void)
{
   
	/*开启时钟*/
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);			//开启TIM2的时钟
	
	/*配置时钟源*/
	TIM_InternalClockConfig(TIM2);		//选择TIM2为内部时钟,若不调用此函数,TIM默认也为内部时钟
	
	/*时基单元初始化*/
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;				//定义结构体变量
	TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;		//时钟分频,选择不分频,此参数用于配置滤波器时钟,不影响时基单元功能
	TIM_TimeB
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值