stm32 基本定时器TIM6、TIM7的使用

发布者:温暖阳光最新更新时间:2017-10-24 来源: eefocus关键字:stm32  基本定时器  TIM6  TIM7 手机看文章 扫描二维码
随时随地手机看文章

基本定时器只具备最基本的定时功能,就是累加的时钟脉冲数超过预定值时,能触发中断或触发DMA请求。


使用基本定时器的定时功能需要进行以下设置:

1)使能定时器的时钟。

2)设置预分频数。

3)设置计数器值。

4)设置采样分频数。

5)设置计数方式,向上还是向下计数,其中TIM6、TIM7只有向上计数功能。

6)使能中断,配置中断分组及中断服务函数。

配置函数如下:

/**********************************************************
** 函数名: TIM6_Config
** 功能描述:  基本定时器配置
** 输入参数: 无
** 输出参数: 无
** 说明:定时时间=(预分频数+1)*(计数值+1) /TIM6时钟(72MHz),单位(s)
   这里溢出时间t=(7200*10000)/72000000s=1s
***********************************************************/
void TIM6_Config(void)
{
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE); //使能TIM6时钟


/*基础设置*/
TIM_TimeBaseStructure.TIM_Period = 10000-1;//计数值10000   
TIM_TimeBaseStructure.TIM_Prescaler = 7200-1;    //预分频,此值+1为分频的除数
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;  //采样分频
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数
TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure);


TIM_ITConfig(TIM6,TIM_IT_Update, ENABLE);     //使能TIM6中断
TIM_Cmd(TIM6, ENABLE);     //使能定时器6
}
/**********************************************************
** 函数名:NVIC_Config
** 功能描述:  中断优先级配置
** 输入参数: 无
** 输出参数: 无
***********************************************************/
void NVIC_Config(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //采用组别2 
 
NVIC_InitStructure.NVIC_IRQChannel =TIM6_IRQn;//TIM6中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//占先式优先级设置为0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //副优先级设置为0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//中断使能
NVIC_Init(&NVIC_InitStructure);//中断初始化
}

中断服务函数如下:

/**********************************************************
** 函数名: TIM6_IRQHandler
** 功能描述: 定时器6的更新中断服务程序
** 输入参数: 无
** 输出参数: 无
***********************************************************/
void TIM6_IRQHandler(void)
{
if (TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM6,TIM_IT_Update);//清除更新中断标志位
GPIOB->ODR^=GPIO_Pin_0;//将PB0电平反向
}
}


TIM7的使用同理。同时通用定时器的定时中断功能也是这样用的。修改TIM6即可。


关键字:stm32  基本定时器  TIM6  TIM7 引用地址:stm32 基本定时器TIM6、TIM7的使用

上一篇:不同stm32f103芯片内部外设资源
下一篇:stm32 IO口模式的寄存器配置

推荐阅读最新更新时间:2024-03-16 15:41

浅谈关于STM32软硬件兼容性相关的知识
Ⅰ、写在前面 很多朋友初学STM32的时候,对STM32芯片很多相关知识都不是很了解,导致了在学习的路上很迷茫,甚至半途放弃。希望本文的内容对初学的朋友有一定帮助。 常见问题: 1.我开发板是STM32F103ZE芯片,但网上找到的软件工程基于STM32F103R8芯片的,我能直接将工程下载并调试吗? 2.我有STM32F205R8的原理图和封装库,但现在需要画STM32F405RC芯片的板子,能直接替换使用吗? 以上问题在你阅读本文之后就会得到比较明确的答案。 关于本文的更多详情请往下看。 Ⅱ、本文要点 从本文的标题可以看得出来,主要是站在“STM32兼容性”的角度来分析问题。 在开发STM32项目中,往往是软件工程师、硬件
[单片机]
浅谈关于<font color='red'>STM32</font>软硬件兼容性相关的知识
STM32之I2C_FLAG_BUSY置位解决办法
stm32f429-disco上的触摸屏IC是STMPE811,使用I2C通信,该ic的使用还不算难,里面包括8通道12bit AD,8个GPIO口,加128set FIFO以及几个寄存器。 问题是出在STM32 的I2C IP核上,网上大家也吐槽了不少,最主要的就是各种当机,当当当当,哈哈。 我第一次出现当机的地方是在 if(__HAL_I2C_GET_FLAG(hi2c, I2C_FLAG_BUSY) == SET) { return HAL_BUSY; } 返回的BUSY值是一直置H的,这就奇怪了,用的是官方的STM32CubeMX生成的初始化代码,刚初始完就BUSY,太坑了吧。 查看dat
[单片机]
<font color='red'>STM32</font>之I2C_FLAG_BUSY置位解决办法
STM32单片机位带操作的原理解析
位操作代码在sys.h文件中,实现对STM32各个IO口的位操作,包括读入和输出。当然在这些函数调用之前,必须先进行IO口时钟的使能和IO口功能定义。 一。位带操作的原理 把一个位膨胀为一个32位的地址,如果要写这个位为1,只需要往这个地址写1. 二。哪些区域支持位带操作? 例如一个SRAM的区域 0x20000000上有32位,每一位都可以映射成一个地址,如果想往哪一位写1,只需要往这一位映射的地址写1.从而达到操作位的目的。 三。位带操作的优越性 不用位带操作的话,要把bit2置1,要先读取0x20000000的值,然后把bit2置1,然后再把寄存器的值写回0x20000000,如果用位带操作,已经知道b
[单片机]
<font color='red'>STM32</font>单片机位带操作的原理解析
带有LED警示灯的骑行夜服设计
近年来,夜间骑车或跑步遭遇不幸的事件时有发生,这往往是因为在转弯或者高速行驶的过程中,汽车司机受限夜间视场,来不及避让而造成的。传统的夜行服大多采用被动方式,即由反光材料制作而成,在暗光条件下工作的人员广泛使用,由于利用的是反光原理,只有在灯光照射下才能进行反光,而且不同灯光照射产生的反光效果不同,因此大大限制了夜光服的使用场合和使用人群。有些主动发光的LED灯,发光面很小,强度较弱,无法起到好的警示作用。 本文设计了一套带有LED警示功能的骑行夜服,能够在夜晚自主发光,该夜行服可为需要在夜间出行的骑行者或跑步者起到好的保护作用。 1、系统方案总体设计 系统总体框图如图1所示,以STM32单片机为主控制核心,包括LED
[电源管理]
STM32 Systick 编程及应用
提到systick 不得不抱怨以下STM32 的用户手册,既然提供了systick 的功能,为啥手册里却只提了一下?后来笔者上网搜的时候,才发现,抱怨的不仅仅是我一个人。闲话不说,下面将笔者搜集的资料进行总结。 一、 systick介绍 Systick 就是一个定时器而已,只是它放在了NVIC 中,主要的目的是为了给操作系统提供一个硬件上的中断(号称滴答中断)。没有学过操作系统的同学, 可能会很郁闷,啥叫滴答中断?这里来简单地解释一下:操作系统进行运转的时候,也会有 心跳 。它会根据 心跳 的节拍来工作,把整个时间段分成很多小小的时间片,每个任务每次只能运行一个 时间片 的时间长度就得退出给别的任务运行,这样可以确保任何一
[单片机]
Stm32端口复用和重映射介绍
说在前面: 1.项目的软件部分完成,准备开始硬件测试,希望不要出太大乱子 端口复用 1.介绍: 在stm32中存在着很多的内置外设(ADC,DAC,串口),为了使得引脚最大利用化,可以将GPIO口复用为其他内部外设的引脚. 2.复用端口的步骤: 1.实现GPIO口的时钟使能 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); 2.实现复用时钟的配置AFIO的配置 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); 3.使用GPIO口的配置(normal) 4实现端口的配置(复
[单片机]
STM32 USB 问题汇总
以下是笔者将ST的Custom_HID例程修改为 自定义USB设备 例程时总结出来的,因为笔者也是刚刚学USB开发不久,某些方面理解错误在所难免,请各位大虾指正。 一、usb_desc.c文件 根据你程序使用的通信方式修改。usb_desc.h文件中定义要根据usb_desc.c文件中的数组的大小;ConfigDescriptor 下添加需要处理的端点;根据需要添加或删除报告描述符(主要用于HID)和CDC接口描述符(主要用于实现USB转串口)等。具体方法可以下载个 电脑圈圈 使用D12编写的例子。 二、Usb_conf.h文件: 1、修改需要处理那些中断 CNTR_CTRM 处理数据正确传输后控制,比如说响应主机 C
[单片机]
<font color='red'>STM32</font> USB 问题汇总
ST推M4 MCU,据称全球性能最强
  “全球每交付2个Cortex-M系列微控制器,其中1个就是STM32,” ST(意法半导体) 微控制器全球市场部总监Daniel Colonna自豪地告诉EEWORLD。 意法半导体微控制器全球市场部总监Daniel Colonna   为了进一步扩大ST Cortex-M微控制器产品阵营,近日,ST宣布STM32 F4系列微控制器产品上市,至此,ST共有超过250种相互兼容的M内核产品的型号。新推出的F4系列产品基于最新的ARM Cortex-M4内核,在现有STM32微控制器产品组合中新增了信号处理功能,并提高了运行速度。新产品继续沿用STM32的蝴蝶logo,昭示着新的F4系列的产品将继续在STM32 Cortex-
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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