STM32F103高级定时器使用

发布者:740322lwj最新更新时间:2021-12-29 来源: eefocus关键字:STM32F103  高级定时器  脉冲宽度 手机看文章 扫描二维码
随时随地手机看文章

  STM32F103单片机中定时器分为3种,高级定时器、通用定时器、基本定时器。


  高级控制定时器(TIM1和TIM8)由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动。它适合多种用途,包含测量输入信号的脉冲宽度(输入捕获),或者产生输出波形(输出比较、PWM、嵌入死区时间的互补PWM等)。使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节。高级控制定时器(TIM1和TIM8)和通用定时器(TIMx)是完全独立的,它们不共享任何资源。它们可以同步操作。


TIM1和TIM8定时器的功能包括:


16位向上、向下、向上/下自动装载计数器

16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意数值

多达4个独立通道:

输入捕获

输出比较

PWM生成(边缘或中间对齐模式)

单脉冲模式输出

死区时间可编程的互补输出

使用外部信号控制定时器和定时器互联的同步电路

允许在指定数目的计数器周期之后更新定时器寄存器的重复计数器

刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态

如下事件发生时产生中断/DMA:

更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)

触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)

输入捕获

输出比较

刹车信号输入

支持针对定位的增量(正交)编码器和霍尔传感器电路

触发输入作为外部时钟或者按周期的电流管理

  可编程高级控制定时器的主要部分是一个16位计数器和与其相关的自动装载寄存器。这个计数


器可以向上计数、向下计数或者向上向下双向计数。此计数器时钟由预分频器分频得到。计数器、自动装载寄存器和预分频器寄存器可以由软件读写,即使计数器还在运行读写仍然有效。


  高级定时器初始化方法如下:


void TIMER1_Init(u16 arr, u16 psc)

{

    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

    NVIC_InitTypeDef NVIC_InitStructure;


    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);


    TIM_DeInit(TIM1);


    TIM_TimeBaseStructure.TIM_Period = arr;

    TIM_TimeBaseStructure.TIM_Prescaler = psc;

    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;

    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

    TIM_TimeBaseStructure.TIM_RepetitionCounter = 0x00;

    TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);


    TIM_ClearFlag(TIM1, TIM_FLAG_Update);

    TIM_ITConfig(TIM1, TIM_IT_Update, ENABLE); //允许更新中断


    NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn; //TIM1更新中断

    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;

    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;

    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

    NVIC_Init(&NVIC_InitStructure);


    TIM_Cmd(TIM1, ENABLE);

}

void TIM1_UP_IRQHandler(void)

{

    if(TIM_GetITStatus(TIM1, TIM_IT_Update) != RESET)

    {

        TIM_ClearITPendingBit(TIM1, TIM_IT_Update);

        LED0 = !LED0;

    }

}


  这里使用的是定时器1,在初始化时传递了两个参数,其中arr用来设置定时器的周期,PSC设置时钟的分频系数。默认定时器的时钟频率为72MHz,所以带入这两个参数后,定时器的周期计算公式为:


(arr+1)*(psc+1)/72MHz,设置定时器的计数模式为向上计数。接下来还需设置重复计时器的值。TIM_TimeBaseStructure.TIM_RepetitionCounter = 0x00;这个是高级定时器特有的一个计数器,默认设置为0,表示定时器永远循环计数,不会停止。如果设置为一个确定的数据,那么定时器执行一定次数后,就会停止运行。如果定时器需要开启中断功能的话,还需要设置NVIC寄存器,用来设置定时器的中断优先级。


int main(void)

{    

    delay_init();       //延时函数初始化

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

    LED_Init();

    KEY_Init();  

    TIMER1_Init(9,71); //50Khz  10us  Tout=(9+1)*(71+1)/72M=10us

      

    while(1)

    {       

    }

}


  在主程序中初始化定时器,这里设置定时器周期值为9,分频值为71,计算出来的定时器周期为10us。在中断函数中让LED灯取反,通过示波器观察就可以看到,LED等每隔10us电平就会变化一次。

关键字:STM32F103  高级定时器  脉冲宽度 引用地址:STM32F103高级定时器使用

上一篇:STM32F103通用定时器使用
下一篇:STM32F103单片机RTC实时时钟的使用

推荐阅读最新更新时间:2024-11-09 13:46

采用STM32F103硬件ADC功能进行光照强度采集
硬件配置 单片机型号:STM32F103C8 屏幕:0.96寸OLED屏 传感器:光照传感器(ADC采集) 功能实现 光照强度采集ADC方式采集,STM32F103本身自带有硬件ADC功能。将采集到的数据实时刷新到屏幕上即可完成波形显示。 0.96寸OLED分辨率为128*64(128列,64行)。我们可以定义一个数组buff ,数组下标作为横坐标,数组中的值作为纵坐标。这样即可把采集到的值实时刷新即可。由于需要先采集的数据先显示,这样就可以采用环形队列特性实现波形显示。 watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4
[单片机]
采用<font color='red'>STM32F103</font>硬件ADC功能进行光照强度采集
如何利用stm32的高级定时器产生PWM
用stm32的高级定时器TIM1和TIM8产生PWM,需要注意: 1.都有TIM1,但只有flash容量大于256K的大容量单片机才有TIM8 2.高级定时器相对于通用定时器,多了TIM_CtrlPWMOutputs(TIM8, ENABLE); TIM1产生四路PWM程序: staticvoidTIM1_GPIO_Config(void) { GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
[单片机]
如何利用stm32的<font color='red'>高级</font><font color='red'>定时器</font>产生PWM
使用ESP8266将STM32F103C8连接到互联网的方法
在本教程中,我们使用 ESP8266 将 STM32F103C8 连接到互联网。在这里,我们将ESP8266 Wi-Fi 模块与我们的蓝丸 STM32F103C8 板接口,并将数据发送到 ESP8266 网络服务器上托管的网页。 所需组件 蓝丸STM32F103C8板 ESP8266 无线无线模块 笔记本电脑和无线网络热点 ESP8266 无线无线模块 大多数人将 ESP8266 称为 WIFI 模块,但它实际上是一个微控制器。ESP8266 是乐鑫公司(一家总部位于上海的公司)开发的微控制器的名称。该微控制器具有执行WIFI相关活动的能力,因此被广泛用作WIFI模块。 接地(0 V) 发射,传输数据位 X GPIO 2
[单片机]
使用ESP8266将<font color='red'>STM32F103</font>C8连接到互联网的方法
stm32f103c8t6利用蓝牙控制180度舵机
关于蓝牙模块部分,如果不了解蓝牙模块的可以看我之前发的东西。 一般来说,舵机接收的PWM信号频率为50HZ,即周期为20ms。当高电平的脉宽在0.5ms-2.5ms之间时舵机就可以对应旋转到不同的角度。以180度角度舵机为例,那么对应的控制关系是这样的: 0.5ms--------------0度; 1.0ms------------45度; 1.5ms------------90度; 2.0ms-----------135度; 2.5ms-----------180度; 关于舵机的话,本人用的是6~8.4V的的60KG大舵机,这里需要注意的是, 控制板上面只提供5V电压,满足不了这种舵机的电压,所以我利用12V的锂电池,让锂
[单片机]
<font color='red'>stm32f103</font>c8t6利用蓝牙控制180度舵机
stm32f103zet6怎么保存flash参数
  STM32的闪存模块由:主存储器、信息块和闪存存储器接口寄存器等 3 部分组成。   主存储器,该部分用来存放代码和数据常数(如 const 类型的数据)。对于大容量产品,其被划分为 256 页,每页 2K 字节。注意,小容量和中容量产品则每页只有 1K 字节。从上图可以看出主存储器的起始地址就是0X08000000, B0、B1 都接 GND 的时候,就是从 0X08000000开始运行代码的。      信息块,该部分分为 2 个小部分,其中启动程序代码,是用来存储 ST 自带的启动程序,用于串口下载代码,当 B0 接 V3.3,B1 接 GND 的时候,运行的就是这部分代码。用户选择字节,则一般用于配置写保护、读保护等
[单片机]
<font color='red'>stm32f103</font>zet6怎么保存flash参数
基于STM32F103——SIM900A发送短信+串口打印
最近用STM32F103做一个智能门锁小玩意,密码输入错误次数多进行验证码解锁,这里我采用SIM900A来通过发送短信输入验证码进行解锁。就是简单的了解了一下在这里也单独的写写这个SIM900A的一写笔记。 基本介绍 。。。。。。还是直接进入主题吧 一:单独测试 SIM900A是可以AT指令操作的,所以一般我拿到这种模块就是先单独的测试一下这个模块是否正常。通过一个USB-TTL 和 SIM900A连接 进行调试。用我们的电脑串口助手测试即可。没必要上来就用单片机,现单独测试了先。没问题再转成代码也不迟。 1.准备工作 USB-TTL一个 还有杜邦线就不用说啦 2.接线 3.指令操作 打开你的串口助手 注意
[单片机]
基于<font color='red'>STM32F103</font>——SIM900A发送短信+串口打印
stm32f103系列引脚定义-功能图
  器件功能和配置(STM32F103xx增强型)   STM32F103xx增强型模块框架图   STM32F103xx增强型VFQFPN36管脚图   STM32F103xx增强型LQFP100管脚图   STM32F103xx增强型LQFP64管脚图   STM32F103xx增强型LQFP48管脚图   STM32F103xx增强型BGA100管脚图   STM32F103xx系列各个管脚名称定义、功能:
[单片机]
<font color='red'>stm32f103</font>系列引脚定义-功能图
STM32F103单片机学习笔记(5):DMA
外部中断触发时,DMA向串口发送一次数据。 DMA是一个好东西,它不需要占用CPU的资源,只需要配置好之后初始化使能就可以将数据从一个地址空间快速复制到另一个地址空间,当DMA传输完成的时候产生一个中断。 STM32有2个DMA控制器,一共12个通道,每个通道专门用来管理来自于一个或多个外设对寄存器访问的请求,参考STM32参考手册。从外设(TIMx、ADC、SPIx、IIC、USARTx)产生7个请求,通过逻辑或者输入到DMA控制器,这意味着同时只能有一个请求有效,DMA1请求一览表。 DMA2请求一览表。 下面是DMA的库 DMA时钟 同样,和之前一样,流程图。 这里具体的代码我就不一一再细说了,只有DAM
[单片机]
<font color='red'>STM32F103</font>单片机学习笔记(5):DMA
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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