STM32定时器同步功能1
STM32定时器同步功能1:将一个定时器用作另一个定时器的预分频器
测试程序说明:
测试芯片为STM32L151C8T6, 程序库使用的是LL库
用TIM3为主定时器,产生更新事件,并产生触发输出(TGRO)给TIM2,TIM2的时钟来自TIM3的TGRO信号,TIM2作为从定时器,配置为PWM输出模式。
内部触发连接如下图:
/*** 说明 : 从定时器初始化,用来生成PWM* 参数 : 无* 返回 : 无*/
void Pwm_Timer_Init(void)
{LL_GPIO_InitTypeDef GPIO_InitStruct = {0};LL_TIM_InitTypeDef TIM_InitStruct = {0};LL_TIM_OC_InitTypeDef TIM_OC_InitStruct = {0};LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOA);LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM2);/** PWM_OUT->PA0 */GPIO_InitStruct.Pin=LL_GPIO_PIN_0;GPIO_InitStruct.Mode=LL_GPIO_MODE_ALTERNATE;GPIO_InitStruct.Speed=LL_GPIO_SPEED_FREQ_HIGH;GPIO_InitStruct.Pull=LL_GPIO_PULL_UP;GPIO_InitStruct.Alternate=LL_GPIO_AF_1;LL_GPIO_Init(GPIOA, &GPIO_InitStruct); /** 定时器时基配置:注意此时TIM2的时钟源来自TIM3即100K */TIM_InitStruct.Prescaler = 9; /** 10分频即10K */TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP;TIM_InitStruct.Autoreload = 9; /** 装载值10即周期为1KHz */TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1;LL_TIM_Init(TIM2, &TIM_InitStruct);LL_TIM_EnableARRPreload(TIM2);/** 输出模式配置 */TIM_OC_InitStruct.OCMode = LL_TIM_OCMODE_PWM1;TIM_OC_InitStruct.OCState = LL_TIM_OCSTATE_DISABLE;TIM_OC_InitStruct.CompareValue = 5; /** 50%占空比 */TIM_OC_InitStruct.OCPolarity = LL_TIM_OCPOLARITY_LOW;LL_TIM_OC_Init(TIM2, LL_TIM_CHANNEL_CH1, &TIM_OC_InitStruct);LL_TIM_OC_EnablePreload(TIM2, LL_TIM_CHANNEL_CH1); LL_TIM_OC_DisableFast(TIM2, LL_TIM_CHANNEL_CH1);/** 触发模式 */LL_TIM_SetSlaveMode(TIM2, LL_TIM_SLAVEMODE_TRIGGER); /** 不要也行 *//** 选择输入触发源(即TIM3生成的时钟) */LL_TIM_SetTriggerInput(TIM2, LL_TIM_TS_ITR2); /** 选哪个看内部触发连接图,手册提供的 */LL_TIM_EnableMasterSlaveMode(TIM2); /** 时钟源设置为模式1 */LL_TIM_SetClockSource(TIM2, LL_TIM_CLOCKSOURCE_EXT_MODE1);LL_TIM_CC_EnableChannel(TIM2, LL_TIM_CHANNEL_CH1); LL_TIM_EnableCounter(TIM2);LL_TIM_GenerateEvent_UPDATE(TIM2);
}/*** 说明 : 主定时器初始化,用来控制从定时器* 参数 : 无* 返回 : 无*/
void Master_Timer_Init(void)
{LL_TIM_InitTypeDef TIM_InitStruct = {0};LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM3); /** 定时器时基配置:输出频率100K */TIM_InitStruct.Prescaler = 31;TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP;TIM_InitStruct.Autoreload = 9;TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1;LL_TIM_Init(TIM3, &TIM_InitStruct);LL_TIM_EnableARRPreload(TIM3);LL_TIM_EnableMasterSlaveMode(TIM3); /** 输出源选择:更新事件 */LL_TIM_SetTriggerOutput(TIM3, LL_TIM_TRGO_UPDATE);
}/*** 说明 : 使能定时器产生PWM* 参数 : 无* 返回 : 无*/
void Start_Timer(void)
{LL_TIM_EnableCounter(TIM3);LL_TIM_GenerateEvent_UPDATE(TIM3);
}/*** 说明 : 关闭定时器产生PWM* 参数 : 无* 返回 : 无*/
void Stop_Timer(void)
{LL_TIM_DisableCounter(TIM3);LL_TIM_ClearFlag_CC1(TIM3);
}
输出波形图:
从波形可以看出输出的信号是一个频率为1KHz占空比50%的PWM波,和预期一致。
STM32定时器同步功能1相关推荐
- STM32定时器同步功能2
STM32定时器同步功能2:用一个定时使能另外一个定时器 测试芯片:STM32L151C8T6 代码库:LL库 本例中,TIM3为主定时器,TIM2为从定时器,通过TIM3 的更新事件使能TIM2,T ...
- STM32定时器间的同步 主TIM1产生PWM 从TIM4精确控制TIM1 PWM脉冲数量
STM32 定时器间的同步 主TIM1产生PWM 从TIM4精确控制TIM1 PWM脉冲数量 文章目录 STM32 定时器间的同步 主TIM1产生PWM 从TIM4精确控制TIM1 PWM脉冲数量 编 ...
- 利用STM32的定时器中断功能编写线阵CCD(ILX554B)的驱动时序
利用STM32的定时器中断功能编写线阵CCD(ILX554B)的驱动时序 1.利用定时器完成线阵CCDILX554B的驱动时序,采用两个管脚1个用于产生ROG信号,一个用于产生CLK信号 2.使用一个 ...
- STM32定时器功能概括
定时器分类 不同的芯片定时器的个数也是不同的,以STM32F103ZE有8个定时器(定时器的具体个数查相关手册). 定时器的分类:高级定时器.通用定时器.基本定时器,这3类定时器的功能各不相同. 定时 ...
- STM32 - 定时器高级应用说明 - 多触波的实现 (N-pulse waveform generation using timer synchronization)- 01
前言: 如何实现复杂的不同频率.相位.波形脉宽的波形就在这个章节: This application example is split into two parts describing two si ...
- 硬件课程设计:基于STM32的多功能播放器之小说阅读
1 小说阅读功能 1.1 功能介绍 1.1.1 设计思路 在TFTLCD屏上显示中英文文本文件是本次硬件课程设计的基本要求,也是我设计的多功能播放器最重要的功能,要求能够读取事先存储在SD卡中的文本文 ...
- STM32定时器配置(TIM1、TIM2、TIM3、TIM4、TIM5、TIM8)高级定时器+普通定时器,定时计数模式下总结
STM32定时器配置(TIM1.TIM2.TIM3.TIM4.TIM5.TIM8)高级定时器+普通定时器,定时计数模式下总结 文章结构: --> 一.定时器基本介绍 --> 二.普通定时器 ...
- STM32定时器实现5秒周期串口通信,2秒LED灯闪烁
文章目录 前言 一.定时器Timer 1.定时器定义 2.定时器分类 3.计数器模式 4.时钟产生器和时基单元 5.工作原理 二.实验步骤 1.用STM32CubeMx创建项目 1.1 创建项目 1. ...
- STM32定时器-基本定时器
STM32定时器-基本定时器 实验芯片:STM32F103 更新日期:2021年8月17日 声明:部分图文来自互联网公开资料,转载注明出处 一.基本定时器简介 TIM6和TIM7是一个16位向上递增的 ...
最新文章
- 《Kotlin极简教程》第三章 Kotlin基本数据类型
- C# 真正能发邮件的源码
- Exchange2007中创建收件人对象、通讯组和地址列表和客户端访问
- Servlet基本概念及执行流程
- 用postman在CSDN上创建博客
- 自定义View(未完待续)
- 嵌套字典|python_Python | 如果不是,则使用嵌套,根据销售额计算折扣
- c语言选择法排序案例,谁能给我一个c语言选择排序法的简单例子
- [linux]linux IO 5种方式
- HTTP请求的完整过程
- 深度卷积神经网络及各种改进
- IBM SPSS Modeler 【3】 神经网络的生成
- 数据结构入门(2)——线性表、堆栈和队列
- 计算机光纤接口网卡,光纤网卡是什么?
- 你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。 如输入1234,则输出: yi er san si
- python123判断火车票座位号分布图_面向回家编程!GitHub标星两万的Python抢票教程”,我们先帮你跑了一遍...
- JAVA五子棋人人对战的实现
- GTID 模式 - 通过跳过事务解决主从故障
- 网络流专题班例题和练习
- Python 抓取新浪财经股票数据