STM32通用定时器库函数设置

发布者:吉州古玩斋最新更新时间:2016-05-25 来源: eefocus关键字:STM32  通用定时器  库函数设置 手机看文章 扫描二维码
随时随地手机看文章
通用定时器

STM32的通用定时器为:TIM2、TIM3、TIM4和TIM5

在使用通用定时器时利用库函数直接设置定时器如下:

1.使能定时器TIM_X的时钟:(X=2、3、4、5)

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIMX,ENABLE);

2.计算要定时的时间,根据定时时间来设定分频数和最大计数值(以向上计数为例子),其中计算关系如下:

系统时钟(一般为72MHZ) =定时器分频数 * 计数值

假如分频数为7200,则定时器时钟为:72MHZ/7200=10KHZ,定时器每次计数时间间隔为1/10000秒,假如定时1秒,则要计数10000次,因此计数器的最大计数值为9999,因为计数器从零开始计数。

3.将计算好的分频数和计数值分别赋值以上面定时为例,如下:

/自动重装的计数值 

TIM_TimeBaseStructure.TIM_Period = (10000 - 1);

// 这个就是预分频系数

 TIM_TimeBaseStructure.TIM_Prescaler =7200 ;

//数字滤波器,定时的时候不涉及此功能,为零即

TIM_TimeBaseStructure.TIM_ClockDivision = 0;

//计数模式选择,此处设置为向上模式

TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounteMode_Up;

//定时基本设置((X=2、3、4、5))

TIM_TimeBaseInit(TIMX, &TIM_TimeBaseStructure);

//清除定时器X的中断溢出标识

TIM_ClearITPendingBit(TIMX,TIM_IT_Update);

//开定时器X溢出中断

TIM_ITConfig(TIM5,TIM_IT_Update, ENABLE);

//计数器使能,开始工作

   TIM_Cmd(TIM5, ENABLE); 

到此通用定时器的定时功能配置完成,以上配置代码可写入

void TIMX_Init(void)函数中,函数名自己可变。别忘了在函数中的第一句写入:TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

4.中断配置,这个按照下面的函数即可

void NVIC_Configuration(void)//定时器中断配置

{

NVIC_InitTypeDefNVIC_InitStructure;

NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0000);

NVIC_InitStructure.NVIC_IRQChannel= TIM5_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority= 1;

NVIC_InitStructure.NVIC_IRQChannelCmd= ENABLE;

NVIC_Init(&NVIC_InitStructure);

}

5. 在stm32f10x_it.c添加定时器TIMX的中断函数:

voidTIM5_IRQHandler(void)

{

//如果定时器产生了中断(X=2、3、4、5)

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

{

  //这是你要完成的事情和相关判断,自己去写

}

//完成事情和判断后,清除中断 

TIM_ClearITPendingBit(TIM5,TIM_IT_Update);

  

  }

}

到此,定时器定时中断功能实现了

关键字:STM32  通用定时器  库函数设置 引用地址:STM32通用定时器库函数设置

上一篇:STM32 通用定时器与滴答定时器
下一篇:stm32通用定时器中断问题

推荐阅读最新更新时间:2024-03-16 14:54

毕业设计| STM32+UART HMI,玩扫雷游戏
每年毕设,STM32出现的频率最高,很多都是“老实本分”的设计,但也有不走寻常路,比如今天分享的这个毕设——扫雷游戏。不知道这位同学在毕业答辩时,有没有被老师为难,当着这么多评委老师,来几盘扫雷,是不是很刺激。 系统的硬件: 指南者开发板和4.2英寸的UATRT HMI串口屏组成,其实可以用最小的核心板,单片机外设也就用到了串口而已,但是要求使用开发板,只好有点浪费了。 软件部分: 软件部分是这个项目的核心。 刚开始参考了网上一些扫雷代码。在单片机上很多地方不一样,但大体思路还是一样的,主要解决的就是与串口屏之间的通信协议,贴一段简单的通信代码。 具体完成功能: 1.扫雷基本功能 2.当周围的雷都标记完时,打开剩余
[单片机]
STM32库函数SystemInit()的理解
SystemInit()这个函数出现在main()函数的第一行,可以看出它的重要性。以前关于SystemInit()这个函数从来没有关心过,只知道这是进行 STM32 系统初始化的一个函数。今天决定仔细看看,重新开始STM32的学习。这个函数在system_stm32f10x.c中,此C文件主要就是干具体硬件配置相关的工作。 void SystemInit (void) { RCC- CR |= (uint32_t)0x00000001; #ifndef STM32F10X_CL RCC- CFGR &= (uint32_t)0xF8FF0000; #else R
[单片机]
基于STM32的软件定时器设计
1 什么是软件定时器 软件定时器是用程序模拟出来的定时器,可以由一个硬件定时器模拟出成千上万个软件定时器,这样程序在需要使用较多定时器的时候就不会受限于硬件资源的不足,这是软件定时器的一个优点,即数量不受限制。 但由于软件定时器是通过程序实现的,其运行和维护都需要耗费一定的CPU资源,同时精度也相对硬件定时器要差一些。 2 软件定时器的实现原理 在Linux,uC/OS,FreeRTOS等操作系统中,都带有软件定时器,原理大同小异。典型的实现方法是:通过一个硬件定时器产生固定的时钟节拍,每次硬件定时器中断到,就对一个全局的时间标记加一,每个软件定时器都保存着到期时间。 程序需要定期扫描所有运行中的软件定时器,将各个到期时间
[单片机]
基于<font color='red'>STM32</font>的软件<font color='red'>定时器</font>设计
STM32芯片定时器输入捕获模式
stm32 定时器有输入捕获模式,PWM输入模式,强输出模式,输出比较模式这几种。 #include HC04.h //这个文件保存了用户自己编写的应用程序 #include SysTick.h extern uint32_t L; //主函数中,定义了L这个全局变量,想要在此文件中用到,应该进行声明 void HC04_Config1(void) //此函数完成HC04避障模块接收端的初始化,需要对定时器TIM2进行配置 { GPIO_InitTypeDef GPIO_InitStructure1; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructu
[单片机]
STM32模拟串口输出偶有乱码
因为芯片串口不够用,只好用IO口模拟串口,在网上下载了个模拟串口的程序,可运行,但发现串口输出隔几个字符就会出现乱码,主要部分代码如下: #define OI_TXD PAout(12) #define OI_RXD PAin(11) #define BuadRate_9600 100 u8 len = 0; //接收计数 u8 USART_buf ; //接收缓冲区 u8 recvStat = COM_STOP_BIT; u8 recvData = 0; void IO_TXD(u8 Data) { u8 i = 0; OI_TXD = 0;
[单片机]
使用stm32产生三角波和正弦波
最近在备战电赛,所以这几天研究了一下用32产生可以控制频率的波形的方法。 32的功能还是很强大的,F4有168MHZ的主频,时钟频率可以达到84MHZ,对于产生波形来说,如果只是产生中低频率的波形来说是完全够用的,借助DMA后产生5MHZ的正弦波是没什么问题的。 我也分享一下我产生三角波和正弦波的方式,因为方波的产生基本上都能做出来,是比较简单的,当然也有不少的大神在研究如何产生更高频率的方波,使32的速度最大化,但我还没有做那方面的深入了解,所以以后学习后再做记录。 一、 首先是三角波 STM32的DAC控制器就支持生成三角波,Datesheet的截图如下 通过阅读以上内容
[单片机]
使用<font color='red'>stm32</font>产生三角波和正弦波
stm32成长记之中断介绍
嵌套向量中断控制器 特性 ●68个可屏蔽中断通道(不包含16个Cortex™-M3的中断线); ● 16个可编程的优先等级(使用了4位中断优先级); 外部中断/事件控制器框图 外部中断程序设计思路: 中断初始化,主要是完善三个结构体: ①GPIO_InitTypeDef (功能:IO配置) ②EXTI_InitTypeDef (功能:中断配置) ③NVIC_InitTypeDef (功能:中断优先级配置) 抢占优先级高的可以抢占优先级低的,即发生中断嵌套;响应优先级高的中断先进行,但不会抢占响应优先级低的中断,即不能发生中断嵌套; void exti_init() { GPIO
[单片机]
<font color='red'>stm32</font>成长记之中断介绍
基于STM32的矿用本质安全型电源设计
0 引言 本安电源是本安型电气设备的一个重要组成部分,由于煤矿的机械化,井下传感器、弯道报警器等设备的供电,通信、报警都需要供电设备。但是基于井下复杂的环境,对供电设备的要求也是非常严格的,它要求电源电路的内部和引出线无论是在正常工作还是在故障状态下都是安全的并且产生的电火花不会点燃周围环境中的爆炸性混合物。本安电源有“ia”和“ib”两个等级。在本文中介绍的本安电源是井下常用的“ia”等级,也就是说在一个故障,一套保护电路损坏的情况下也能继续工作。 1 本安电源的组成及工作原理 1.1 电源 本系统中本安电源的输入+Vin、-Vin为48 V 直流电源,经过DC/DC 电源转换模块(U1)输出12 V直流电,U2是780
[单片机]
基于<font color='red'>STM32</font>的矿用本质安全型电源设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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