实验十 TIM-通用定时器-外部脉冲计数
一、简介:
- 实验目的:学习通用定时器由外部触发引脚ETR引入的脉冲信号作为时钟源,进行脉冲计数。
- 硬件资源及引脚分配:通用定时器TIM2_CH1(PA0)、TIM3_ETR(PD2);串口1(Tx→PA9,Rx→PA10); KEY1(PA15)
- 实验现象:用杜邦线连接PA0(输出PWM波)和PD2(TIM3_ETR),可以观察到由串口打印的脉冲计数结果,计数值依次递增;按下KEY1,脉冲计数重置。
二、工程搭建:
1.新建工程,选择芯片型号:STM32F103RCT6
2.配置系统:Debug选择“Serial Wire”
3.配置时钟系统:选择外部高速时钟,配置HSE为8MHz,ABP1为72MHz(以实际情况为准)
4. 配置通用定时器TIM2-产生PWM波:

PWM的频率:
时钟频率是72MHz,PSC是7199,ARR是9999,
PWM的频率=时钟频率/(PSC+1)×(ARR+1)=72MHz/(7199+1)×(9999+1)=1Hz。(这主要是为了方便记录时能够观察得更清楚,不至于频率太快,一闪而过,观察不清)
PWM的占空比:
Pulse/(ARR+1)=5000/(9999+1)=50%(可以任意设置,只要不是0%就可以,对实验结果无影响)
TIM2_CH1对应的引脚是PA0,生成的PWM波,作为脉冲计数的外部时钟源。
5. 配置通用定时器TIM3:
从模式选择外部时钟模式1(External Clock Mode 1)*,时间源选择外部触发输入(ETR1),这时PD2自动配置为TIM_ETR引脚。
PSC选择0,也就是不分频;
ARR选择65535(最大值),这样能计数的最大脉冲数为65536个,减少溢出。
6. 配置按键KEY1(用于按键按下时,脉冲计数重置)、USART等外设
7. 生成工程源码
三、编写代码:编译通过后即可下载
1.定义变量,启动通用定时器TIM2、TIM3

2. 按键扫描函数

3. 脉冲计数并通过串口打印出来;按键按下时,重置计数值

四、实验现象:
用杜邦线连接PA0(输出PWM波)和PD2(TIM3_ETR),可以观察到由串口打印的脉冲计数结果,计数值依次递增;按下KEY1,脉冲计数重置。
==============分 割 线================
*:TIM3从模式选择外部时钟模式1(External Clock Mode 1),时间源选择有8个选项,如下图,这些选项之间有什么区别?期待大佬指点。
(正点原子的例程选择的是TI1FP1(对应的引脚是PA6),我选择的是ETR1(对应的引脚是PD2),而这块mini开发板中板载的绿色LED的引脚也是PD2,正好可以作为程序运行的指示灯)

全部评论