设备
STM32G030C8T6开发板
时钟源
时钟源,就是计数器基于哪个时钟来计数。手册上介绍有三种方式,第一种就是用内部或外部晶振输入到内部的时钟,第二和四我没了解。
External clock source mode 2
看下图大概就是用外部的ETR引脚输入一个时钟,通过一些寄存器的配置来选择需不需要再分频,需不需要滤波,选择上升沿来作为后续的上升沿还是将上升沿作为后续的下降沿这样。
再来看下面这张Timer的整个框架图,上面的CK_PSC输出就是下面的计数器的时钟。
测试
现在知道了ETR就是给定时器提供时钟来计数的,我的测试就是给这个定时器一个时钟从ETR输入,再让这个定时器输出PWM。
配置ETR的输入时钟
我用TIM1基于内部时钟配置输出一个1K的PWM来作为另一个时钟的外部时钟源。系统时钟是16M的。
配置外部时钟源2模式
设置Timer3为外部时钟源2模式,并输出一个PWM波。我配置的不分频,ARR为3(4-1),就相当于输入时钟4个周期我这边一个周期。
代码部分
生成项目后需要手动启动PWM输出,在主函数里加上。
验证
将板子的TIM3_ETR引脚和TIM1_CH1连接,示波器接入TIM1_CH1和TIM3_CH1来验证。上边是TIM1的,下边是TIM3的。