STM32F103ZET6 — TIM6/TIM7

发布者:csZhou最新更新时间:2021-11-05 来源: eefocus关键字:STM32F103ZET6  TIM6  TIM7 手机看文章 扫描二维码
随时随地手机看文章

介绍

STM32F103ZET6 定时器资源非常丰富,根据 datasheet 描述,涵盖如下几种类型:


高级定时器 TIM1 / TIM8

通用定时器 TIM2 / TIM3 / TIM4 / TIM5 

基本定时器 TIM6/ TIM7

本次描述的重点是基本定时器 TIM6/ TIM7


基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动。它们可以作为通用定时器提供时间基准,特别地可以为数模转换器(DAC)提供时钟。实际上,它们在芯片内部直接连接到DAC并通过触发输出直接驱动DAC。这2个定时器是互相独立的,不共享任何资源。


时钟

可以看到来自 APB1 的低频时钟经过频率x2供给了 TIM2~TIM7,其中包含了 TIM6/ TIM7,所以供给此部分的时钟为 72MHz


在 TIM6 / TIM7 中存在一个预分频器,支持输入的时钟进行预分频,计数器使用预分频后的时钟进行计数:

预分频的参数配置支持 1~65536


模式

TIM6 / TIM7 支持基本的循环计数,计数方式是从小到大。并且可以支持在任何时间内进行预分频系数的配置,配置在下一个UEV产生后生效。(UEV指的是一个更新时间,即一次计数溢出,当然,也可以支持软件进行主动触发)


可以支持 auto reload 和 one shot 的模式,即计数器完成一次计数之后,是自动重载之前的值,继续计数,还是完成一次计数任务后,停止计数。通过配置 TIMx_CR1 的 OPM单脉冲模式 (One-pulse mode) 来选择:

中断

可以通过配置中断,来达到计数器上溢出时刻产生对应的中断




配置过程

1. 打开 TIM6 / TIM7 的时钟


2. 配置中断优先级 NVIC 并使能中断


3. 配置分频系数和计数器的达到溢出的上限数值


4. 启用自动重装载预装载


5. 选择auto reload模式


6. 选择更新源(全开)


7. 开启溢出中断


8. 使能定时器




代码

初始化部分

这里 72MHz 的时钟输入,预分频为 7200(7200 - 1,这里是 datasheet中描述的预分频计算方法),计数为10000次溢出,故产生的是 1s 的定时器:


#define TIM6_CNT    (10000 - 1)

#define TIM6_PSC    (7200 - 1)

static SK_TIM6_NVICConifg(void)

{

    NVIC_InitTypeDef NVIC_InitStructure;

 

 

    /* PE5/PE6 */

    NVIC_InitStructure.NVIC_IRQChannel = TIM6_IRQn;

    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

    NVIC_Init(&NVIC_InitStructure);

}

 

void SK_TIM6_Init(void)

{   

    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

 

    SK_TIM6_NVICConifg();

 

    /// Step 1 : Open TIM6&TIM7 Clock

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);

 

    /// Step 2 : Set basic settings

    // Input CLOCK = 72MHz

    TIM_TimeBaseStructure.TIM_Period = TIM6_CNT;

    TIM_TimeBaseStructure.TIM_Prescaler = TIM6_PSC;

    TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure);

 

    TIM_ARRPreloadConfig(TIM6, ENABLE);

 

    TIM_SelectOnePulseMode(TIM6, TIM_OPMode_Repetitive);

 

    TIM_UpdateRequestConfig(TIM6, TIM_UpdateSource_Global);

 

    TIM_ITConfig(TIM6, TIM_IT_Update, ENABLE);

 

    TIM_Cmd(TIM6, ENABLE);

}


中断处理部分

void TIM6_IRQHandler(void)

{

    static uint8_t cnt = 0;

    if (TIM_GetITStatus(TIM6, TIM_IT_Update))

    {

        TIM_ClearITPendingBit(TIM6, TIM_IT_Update);

        if (!cnt)

        {

            SK_SetLedStatus(SK_LED_1, SK_LED_ON);

            cnt++;

        }

        else

        {

            SK_SetLedStatus(SK_LED_1, SK_LED_OFF);

            cnt--;

        }

    }

}

关键字:STM32F103ZET6  TIM6  TIM7 引用地址:STM32F103ZET6 — TIM6/TIM7

上一篇:STM32F103ZET6 — RTC
下一篇:STM32F103ZET6 — TIM6/TIM7

推荐阅读最新更新时间:2024-11-10 12:38

基于stm32f103zet6的定时器的学习1(理论知识)
之前就听到网友说定时器这部分比较复杂,难搞,实验室里有个同学也搞了一段时间,不过它属于哪种专研型的人!学着学者,我也来到了定时器这章。 在网上查看了一下,也翻阅了一些书籍,高级定时器,通用定时器,普通定时器这三种就从通用的开始学吧! 一、首先还是将定时器框图分解一下吧,那么令人窒息的框图着实让人恐怖!虽然窒息,但是还是有必要贴上去! 对上面框图中的寄存器名字解释如下 TIMx_ETR:TIMER外部触发引脚ETR:外部触发输入ETRP:分频后的外部触发输入ETRF:滤波后的外部触发输入 ITRx:内部触发x(由另外的定时器触发)TI1F_ED:TI1的边沿检测器。TI1FP1/2:滤波后定时器1/2的输入 TRGI:触发
[单片机]
基于<font color='red'>stm32f103zet6</font>的定时器的学习1(理论知识)
STM32F103ZET6 时钟(2)—— 代码篇
基于特定的开发板上的时钟策略: 倍频/分频系数需要在使能 PLL 之前进行配置,所以需要在 Open PLL 之前将所有系统的时钟分频器系数以及PLL的倍频系数配置好。整个时钟的配置流程如下所示: (1) 开启HSE,等待HSE稳定 (2) 设置APB2、APB1、AHB分频系数 (3) 设置PLL的时钟来源和PLL的倍频系数 (4) 开启PLL,等待PLL稳定 (5) 设置SYSCLK源为 PLL 的输出,读取时钟切换状态,确保PLLCLK被选为系统时钟 (1) OSC_IN/OSC_OUT 上外接 8M 晶振。要使用外接晶振,上电后(默认使用 8M 的HSI),首先需要使能 HSE,位于RCC_CR寄存器的 bi
[单片机]
基于stm32f103zet6点亮LED之启动文件
终于开始点亮第一个LED了,惯用思维,从模仿开始!前两天一直在做最小系统板,今天上午才调试出来,测试程序也是的别人的,从现在开始就来仔细分析一下这第一个点灯大法吧! 由于在开始学习stm32之前已经接触过相关的指导书了,所以现在学起来还是比较轻松的,废话不多说,直接从启动文件开始吧! 启动文件这部分和arm11的还是很类似的,是开发板上电后执行的第一段代码,唯一不同的感觉的就是比arm11的启动文件简单多了,下面的一些代码解释都是和arm11对照来说的,上代码吧,声明,我使用的是3.5的库!芯片的具体型号是stm32f103zet6!这里我不适用keil自带的启动代码,为什么,百度能搜到原因! 首先明白一点自己所用的板子的简单介绍
[单片机]
基于<font color='red'>stm32f103zet6</font>点亮LED之启动文件
石英晶体测试系统中DDS信号源设计
产生正弦激励信号一般可以通过振荡电路或直接数字频率合成器(Direct Digital Frequency Synthesis,DDS),DDS较振荡电路具有相位噪声小、杂散抑制好、可产生连续波信号、扫频信号和频率捷变信号等优点。石英晶体电参数测试中激励信号的指标如幅度、频率的稳定性对后续的测量精度至关重要。所以系统采用AD9852型DDS作为信号源。石英晶体电参数测试系统中,DDS可以同时产生多路正弦信号,并可对信号的频率、幅度、相位精确控制,用以测量石英晶体电参数,随着对石英晶体频率精度的要求越来越高,DDS的信号源设计及控制具有重要现实意义。 1 π网络法测试原理 在串联谐振状态下,石英晶体等效电路模型如图1所示,C
[单片机]
石英晶体测试系统中DDS信号源设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved