STM32学习笔记——高级定时器TIM1更新中断配置

发布者:沭阳小黄同志最新更新时间:2020-12-03 来源: eefocus关键字:STM32  高级定时器  TIM1  中断配置 手机看文章 扫描二维码
随时随地手机看文章

stm32高级定时器TIM1,更新中断初始化配置和普通定时器差别不大,需要注意的是结构IM_TimeBaseInitTypeDef中TIM_RepetitionCounter配置问题。TIM_RepetitionCounte是用来配置重复计数,就是重复溢出多少次才给你来一个溢出中断,只有高级定时器需要配置。下面是官方库中对它的注释:

它对应的寄存器叫TIM1_RCR.如果这个值不配置,上电的时候寄存器值可是随机的,本来1秒中断一次,可能变成N 秒中断一次。下图是stm32参考手册中对该寄存器的详细解释:

总结一下高级定时器溢出中断配置的步骤:


1,时钟使能


2,配置预分频、自动重装值和重复计数值


3,清除中断标志位(否则会先进一次中断)


4,使能TIM中断,选择中断源


5,设置中断优先级


6,使能TIMx外设


下面附上我用库函数写的TIM1溢出中断配置程序代码:



//arr:自动重装值。

//psc:时钟预分频数

void Timer1_Init(u16 arr,u16 psc)

{

  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

  NVIC_InitTypeDef NVIC_InitStructure;


  RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //时钟使能


  TIM_TimeBaseStructure.TIM_Period = arr; //设置自动重装载寄存器周期值

  TIM_TimeBaseStructure.TIM_Prescaler =(psc-1);//设置预分频值

  TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割

  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式

  TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;//重复计数设置

  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //参数初始化

  TIM_ClearFlag(TIM1, TIM_FLAG_Update);//清中断标志位


  TIM_ITConfig(      //使能或者失能指定的TIM中断

    TIM1,            //TIM1

    TIM_IT_Update  | //TIM 更新中断源

    TIM_IT_Trigger,  //TIM 触发中断源 

    ENABLE       //使能

    );

  //设置优先级

  NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn;  

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//先占优先级0级

  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;     //从优先级0级

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

  NVIC_Init(&NVIC_InitStructure); 


  TIM_Cmd(TIM1, ENABLE);  //使能TIMx外设

}



void TIM1_UP_IRQHandler(void) 

{            

if (TIM_GetITStatus(TIM1, TIM_IT_Update) != RESET)//检查指定的TIM中断发生与否:TIM 中断源 

{

TIM_ClearITPendingBit(TIM1, TIM_IT_Update);//清除TIMx的中断待处理位:TIM 中断源 

/***************在此处添加中断执行内容******************/


}      


关键字:STM32  高级定时器  TIM1  中断配置 引用地址:STM32学习笔记——高级定时器TIM1更新中断配置

上一篇:STM32学习笔记——AFIO时钟的配置问题
下一篇:STM32F103:什么时候需要复用IO(AFIO)

推荐阅读最新更新时间:2024-11-16 21:10

STM32的DMA串口直通
搞这个,起因呢,公司产品里ZigBee模块固件版本不对,一大批产品需要二次升级。 需要升级的ZigBee模块是直接与stm32相连的,没有引出升级口,所以得搞个串口直通程序,通过232转MCU再转ZigBee,来进行升级。 一开始直接中断互通,结果呢,通倒是可以通,一升级固件就不行了,大概是因为数据量较大吧。 所以用了DMA,之前也没用过DMA,就慢慢学慢慢模仿着改呗。 这里要涉及到一个点,DMA的外设到外设,经常写的是,DMA只有外设到内存、内存到外设、内存到内存三种模式。 实际上,DMA是可以外设直接到外设的,而且用法非常非常简单,直接设置成外设到内存或内存到外设模式,然后把内存直接改成外设的地址,就可以了。
[单片机]
<font color='red'>STM32</font>的DMA串口直通
stm32串口通信程序之UART2(TTL)
一、硬件连接 二、串口助手设置: 三、keil下编程 1.要添加的工程文件 二要编写的user文件 1.main.c #include printf.h int main() { printf_init(); printf( luoyiran is a nice boyn ); printf( xixin ); printf( serial communications is so mystical and interesting!n ); printf( keep striving!n ); } 2.printf.c #include p
[单片机]
<font color='red'>stm32</font>串口通信程序之UART2(TTL)
基于STM32的传统USB 2.0接口到Type-C的转换方案
围绕USB Type-C接口的话题已经很火爆了,很多公司也推出了Type-C相关芯片。它的优势主要体现在不分正反双面接插、传输速度快、供电强悍、支持音视频传输。 我们知道,STM32芯片大多数型号都带USB DEVICE或USB OTG模块,随着Type-C接口的不断推广与普及,STM32芯片的USB模块如何与Type-C接口连接的问题,自然会逐渐出现在STM32应用工程师的面前。 ST官方有个应用笔记【AN4775】介绍了如何用USB Type-C替代传统USB 2.0连接器的方案建议。同时,笔记里也简单介绍了有关USB Type-C及USB电源传输的一些基础知识。 这里不妨一起先看看USBType-
[单片机]
基于<font color='red'>STM32</font>的传统USB 2.0接口到Type-C的转换方案
stm32 CubeMx falsh应用
STM32CubeMx工具没有配置Flash应用。需用户调用库函数实现FLASH的擦除、读、写操作。 具体FLASH的擦除、读、写流程及具体配置详情需查看STM32 FLASH编程文档。 现贴出基于STM32CubeMX工具MDK建立的工程文档,实现的FLASH操作代码。 //读取指定地址的半字(16位数据) //faddr:读地址(此地址必须为2的倍数!!) //返回值:对应数据. uint16_t STMFLASH_ReadHalfWord(uint32_t faddr) { return *(uint16_t*)faddr; } //从指定地址开始读出指定长度的数据 //ReadAddr:起始地址 /
[单片机]
STM32的4中输出模式
1、普通推挽输出(GPIO_Mode_Out_PP): 使用场合:一般用在0V和3.3V的场合。线路经过两个P_MOS 和N_MOS 管,负责上拉和下拉电流。 使用方法:直接使用 输出电平:推挽输出的低电平是0V,高电平是3.3V。 2、普通开漏输出(GPIO_Mode_Out_OD): 使用场合:一般用在电平不匹配的场合,如需要输出5V的高电平。 使用方法:就需要再外部接一个上拉电阻,电源为5V,把GPIO设置为开漏模式, 当输出高组态时,由上拉电阻和电源向外输出5V的电压。 输出电平:在开漏输出模式时,如果输出为0,低电平,则使N_MOS 导通,使输 出接地。若控制输出为1(无法直接输出高电平),则
[单片机]
STM32菜鸟成长记录---GPIO的使用
span style= font-size:14px; /span span style= font-size:14px; #include stm32f10x_lib.h #include stm32f10x.h GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO宏操作结构体 void Delay(__IO uint32_t nCount)//__IO的宏定义volatile { for(; nCount != 0; nCount--); } /*初始化嵌入式Flash接口,初始化PLL使其达到系统可用频率*/ vo
[单片机]
<font color='red'>STM32</font>菜鸟成长记录---GPIO的使用
STM32的GPIO内部结构及相关寄存器
学完大二上学期51单片机课程的寒假,在家我就开始捣鼓STM32了,记得那时候接触STM32感觉它很难,20多天下来就学习了RCC时钟体系和GPIO控制模块,开学后又开始忙一些有的没的,STM32的学习也搁置了,以至于后来跟学校当时在念博的老师交流时,我是这样描述我的STM32开发水平的:“我只会用GPIO写流水灯程序”,说来汗颜。 最近一阵子又回归STM32学习之旅,对于GPIO模块其实很不想写文章,感觉在炒冷饭,不过,认真考虑后还是敲起了键盘,对于概念性的东西还是做一下笔记吧,编程方面的,挺简单,相关资料很多,就不记录了。 1. GPIO简介 GPIO是通用输入/输出端口的简称,是STM32可控制的引脚。GPIO的引
[单片机]
<font color='red'>STM32</font>的GPIO内部结构及相关寄存器
gd32和stm32哪个好?
GD32和STM32是两种常见的微控制器系列,是开发者们常用的开发板核心。尽管它们相似之处很多,但它们也存在着差异,本文将深入探讨GD32和STM32,分享它们的优缺点。 首先,我们从GD32说起。GD32是由国内的同时表示中心研发的一种基于ARM Cortex-M3 CPU的微控制器,该平台具有很高的兼容性、低功耗以及出色的性能。许多GD32产品也广泛用在电子产品、智能家居、工业控制系统和无人机开发等领域。 与此相反,STM32系列是ST公司基于Cortex-M3架构开发的高性能微控制器。STM32系列以其高速运算能力、出色的数据处理性能、广泛的官方支持和易用的硬件软件接口而著名。STM32可轻松完成各种任务,比如音频、显示以及
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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