5.1江科大STM32学习之定时器外部中断和定时器外部时钟

1.定时中断基本结构

1.开启RCC内部时钟(上电)——>2.选择时基单元的时钟源——>3.配置时基单元——>

4.中断输出控制配置——>5.配置NVIC

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

TIM_InternalClockConfig——设置TIMx内部时钟

TIM_ITRxExternalClockConfig——设置TIMx内部触发为外部时钟模式

TIM_TIxExternalClockConfig——设置TIMx触发为外部时钟

TIM_ETRClockMode1Config——设置TIMx外部时钟模式1

TIM_ETRClockMode2Config——设置TIMx外部时钟模式2

TIM_ETRConfig——用来配置ETR的预分频器,极性,滤波器等参数

3.配置时基单元

4.中断输出控制配置

5.配置NVIC(在misc.h中)

6.运行控制

7.修改预分频值函数

8.改变计数器计数模式

9.计数器预装功能配置

10.写入值(给计数器和自动重装写入值) 

11.获取当前计数器的值

12.获取预分频的值

13.获取标志位和清除标志位的值

a.思路

1.因为用定时器2(TIM2)所以开启APB1的时钟TIM1为高级定时器

2.选择时基单元的时钟(我们用的是内部时钟)所以用的函数TIM_InternalClockConfig
3.时基单元的初始化

4.输入滤波的分频

假设设置二分频,内部时钟输出72MHZ,二分频完就为36MHZ

Tclk(MHZ)=(ARR+1)*(PSC+1)/T

ARR:自动重装值

PSC:预分频器系数

就是按照这个公式而言MHZ变小,ARR,PSC为常量,T就要变大——>每次采样的时间变多,就导致采样的次数(N)增加——>采样精度增加

5.计数方式向上,向下和三种中央对其计数

6.配置定时器计算时长

一般为72MHZ,得出计算频率为1us,计算周期为9999,寄存器从0开始计数,所以就是1s来一次中断,预分频为7200——>t=时钟输入频率/预分频

7.使能定时器中断(因为要用更新中断就是计数器溢出产生更新时间)

详细看这个

8.然后就是NVIC配置

可看这篇文章

先配置NVIC线路图上没有那就去代码中找

因为用的是定时器2(TIM2)

8.使能TIM2,定时器开始运行

TIM_Cmd(TIM2, ENABLE);

9.定时器中断服务函数编写

TIM_GetITStatus(TIM2, TIM_IT_Update) == SET

这句的意思是用TIM_GetITStatus来获取TIM2的更新中断标志位,如果他是高电平的话Num++

然后用TIM_ClearITPendingBit清除TIM2更新时间的中断标志位

2.外部时钟

外部时钟模式1使用外部输入脚作为计数器时钟的时钟源

而外部时钟模式2使用外部触发输入或内部触发输入作为计数器时钟的时钟源

因为对射式红外传感器不是一个稳定的方波信号输出,他只有等外部触发了才能输出一个方波信号

所以用ETR

详细文本请看

TIM_ETRClockMode2Config(TIM2, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0x0F);

参数分别是:第一个是定时器,第二个是外部触发预分频器,第三个是外部触发极性,第四个外部触发滤波器

时基单元初始化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值