历史上的今天
返回首页

历史上的今天

今天是:2024年12月03日(星期二)

正在发生

2020年12月03日 | STM32学习笔记——高级定时器TIM1更新中断配置

2020-12-03 来源:eefocus

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 中断源 

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


}      


推荐阅读

史海拾趣

Blaze Display Technology Co Ltd公司的发展小趣事

随着技术的不断进步,Blaze公司意识到要想在激烈的市场竞争中立于不败之地,必须不断进行技术创新和品质升级。因此,公司加大了研发投入,引进了一批高端技术人才和先进设备,成功研发出了多项具有自主知识产权的核心技术。同时,公司还严格把控产品质量,确保每一块显示屏都达到行业领先水平。

Delta Electronics Manufacturing Corp公司的发展小趣事

技术创新一直是Delta的核心竞争力。多年来,公司不断投入研发资源,推动技术创新和产品升级。Delta的工程师团队致力于电源技术的研发,成功推出了一系列具有领先技术水平的电源产品,如高效能转换器、智能电源管理系统等。这些产品不仅满足了市场的多样化需求,也推动了电源行业的技术进步。

GREATECS公司的发展小趣事

技术创新一直是Delta的核心竞争力。多年来,公司不断投入研发资源,推动技术创新和产品升级。Delta的工程师团队致力于电源技术的研发,成功推出了一系列具有领先技术水平的电源产品,如高效能转换器、智能电源管理系统等。这些产品不仅满足了市场的多样化需求,也推动了电源行业的技术进步。

Danaher Corporation公司的发展小趣事

在十九世纪80年代,丹纳赫集团面对日益严峻的市场竞争,开始推行以精益生产为核心的全新运营方式。这种管理方式不仅强化了其在行业中的领导地位,还逐渐形成了独特的丹纳赫商业系统(Danaher Business System,DBS)。DBS注重持续改进、客户导向和团队合作,成为丹纳赫集团在电子行业取得成功的关键因素。

Armel Electronics Inc公司的发展小趣事

在电子行业中,产品质量是企业生存和发展的关键。Armel Electronics Inc公司深知此道,始终坚持品质至上的原则。公司从原材料采购到生产流程,再到产品出厂,每一个环节都严格把控,确保产品质量的稳定性和可靠性。这种对品质的执着追求,使得Armel的产品在市场上赢得了良好的口碑,并逐渐树立了公司的品牌形象。

艾华集团(AISHI)公司的发展小趣事

1985年,艾立华和王安安怀揣着3700元的全部家当,毅然决然地踏上了创业之路。他们租下了两间不到50平方米的废弃小平房,与几名工人一起,手工制作铝电解电容器。由于资金、技术和市场的限制,艾华集团最初只能接一些其他企业不愿意做的、用量很少但又刚需的项目。然而,即便是在这样的困境中,艾立华和王安安也始终坚持对产品品质的精益求精,他们深知,只有高品质的产品才能在市场上立足。

问答坊 | AI 解惑

最受欢迎的国际和区域分销商:规模、专精与特色的较量

本帖最后由 jameswangsynnex 于 2015-3-3 20:00 编辑 …

查看全部问答>

你有意念移物能力吗

恐怖电影里经常出现这样的场面:物体咯咯作响、好像长腿似的移动起来,甚至在空中呼啸而过。一些人能够用思维影响物质的说法已存在了几百年,从移动家具到把勺子“看”弯,但是对这种现象的调查却一直存在争议。在普林斯顿大学从事全球意识研究计 ...…

查看全部问答>

DSP C语言入门谈

年初到现在,接触DSP已经半年了,由于公司没有人指导,做了这么久都没出什么大的成果,也走了不少的弯路。以前做单片机用C编过一些程序,个人觉得还可以。现在看来也只是在吃以前在学校里面一些C语言皮毛的老本,加上一些网上说的所谓的技巧什么的 ...…

查看全部问答>

点触摸屏,屏幕会出现小黑圆圈,这部分代码在那里?

在wince中,当我们用触摸笔点一下屏幕的时候,会在围绕触摸笔在触摸笔周围画一个由几个小黑圆点围成的圆圈,我想问一下,这部分代码在什么位置?调用的什么函数或者库?…

查看全部问答>

想找个兼职,VC、单片机、arm嵌入式开发

想找个兼职,VC、单片机、arm嵌入式开发 作过基于microchip系列、msp430系列、S3C44B0、AT91RM9200、ST710等mcu的项目, 包括电力系统监控、税控等行业. 可承担四层板电路设计,底层嵌入式程序设计及上位机配套程序编写。 13816950690 msn:xh_du ...…

查看全部问答>

安捷伦武汉招聘销售工程师!

安捷伦武汉招聘销售工程师! Job Title                         Sales Engineer Type                &n ...…

查看全部问答>

初学者请教个中断的问题,谢谢!

电平触发方式的中断不是应该保持中断状态么?咋我这个接地之后只是变化的慢了而不是完全不动呢? #include void delay(unsigned int z); //延迟子程序声明 sbit dula=P1^0; //段锁位 sbit A1=P2^2; sbit B1=P2^3; sbit C1=P2^4; ...…

查看全部问答>

【版主救命】关于STM8S的SPI模式的选择

我想用STM8S207和一个解码芯片进行SPI通信,ST芯片只接受,而解码芯片只发送,两者之间有3根线连接,一根CS片选,一根时钟,一根数据线,然后我用的STVD和source insight进行编程,其中sourceinsight库中有2LINES_FULLDUPLEX,  2LI ...…

查看全部问答>

有没有做过1G采样系统的PCB

有没有做过1G采样系统的PCB啊?不知道现在做的这样高频的人多不多?技术怎么样啊?…

查看全部问答>