历史上的今天
返回首页

历史上的今天

今天是:2024年09月24日(星期二)

正在发生

2019年09月24日 | STM32F1x系列——定时器中断

2019-09-24 来源:eefocus

一 通用定时器的工作过程如下图:

 

二 计数器模式:


(1)向上计数模式:计数器从0计数到自动加载值,然后重新从0开始计数并且产生一个计数器溢出事件


(2)向下计数模式:计数器从自动装入的值开始向下计数到0,然后从自动装入的值重新开始,并产生一个计数器向下溢出的事件


(3)中央对齐模式(向上/向下计数):计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1,并且产生一个计数器溢出事件,然后再从0开始计数


通用定时器常用寄存器和库函数:


(1)定时器使能函数:void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState)


(2)定时器中断使能函数:void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState)


(3)状态标志位获取和清除:


      FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);

      void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);

      ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);

      void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);


三  定时器中断实现步骤:


(1)使能定时器时钟:RCC_APB1PeriphClockCmd();


(2)初始化定时器,配置ARR,PSC:TIM_TimeBaseInit();


(3)开启定时器中断,配置NVIC:


      void TIM_ITConfig();

      NVIC_Init();


(4)使能定时器:TIM_Cmd();


(5)编写中断服务函数:TIMx_IRQHandler();


四 定时器的计算:Tout(溢出时间)=(ARR+1)(PSC+1)/Tclk


五 下面是定时中断的代码:


(1)TIME.c



void TIM3_Int_Init(u16 arr,u16 psc)

{

    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

NVIC_InitTypeDef NVIC_InitStructure;

 

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能

//定时器TIM3初始化

TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值

TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值

TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; 

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

TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx的时间基数单位

 

TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断

 

//中断优先级NVIC设置

NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; 

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 

NVIC_Init(&NVIC_InitStructure);  //初始化NVIC寄存器

 

 

TIM_Cmd(TIM3, ENABLE);  //使能TIM3  

}

//定时器3中断服务程序

void TIM3_IRQHandler(void)   //TIM3中断

{

static u8 count=0;

if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)  //检查TIM3更新中断发生否

{

TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );  //清除TIM3更新中断标志

LED1=!LED1;

}

}



(2)MAIN.c


int main(void)

{

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

         delay_init();

LED_Init();

TIM3_Int_Init(4999,7199) ;  //500ms 

while(1)

{

 

LED3 = !LED3 ;     //LED3每隔200ms亮

delay_ms(200) ;

 

}

 

}

程序仿真下载后:LED3每隔200ms闪烁,LED1每隔500ms闪烁

推荐阅读

史海拾趣

ANSHAN [Anshan Suly Electronics]公司的发展小趣事

ANSHAN公司成立于上世纪末,当时正值电子行业的蓬勃发展期。创始人李先生凭借对电子技术的深厚理解和敏锐的市场洞察力,决定投身于这个充满机遇的领域。初创时期的ANSHAN面临资金短缺、人才匮乏和技术壁垒等多重挑战。然而,李先生带领团队日夜兼程,不断研发新产品,拓展市场渠道。他们坚持自主创新,不断攻克技术难题,逐渐在电子行业中崭露头角。

Filtran Ltd公司的发展小趣事

近年来,随着5G、物联网等技术的快速发展,电子行业面临着前所未有的挑战和机遇。Filtran Ltd深知唯有不断创新才能保持竞争力。公司加大了在研发方面的投入,建立了多个专项研究小组,专注于新技术、新材料和新工艺的探索。通过持续创新,Filtran Ltd成功推出了多款符合市场需求的新产品,进一步巩固了其在电子行业中的地位。同时,公司还积极拥抱数字化转型,利用大数据、人工智能等先进技术提升运营效率和服务水平。

Comair Rotron公司的发展小趣事

随着电子技术的飞速发展,Comair不断投入研发,力求在技术上取得突破。在某次关键的技术研发中,公司成功开发出了一种新型高效风扇,其性能远超当时市场上的同类产品。这一技术突破为Comair赢得了更多电子行业客户的青睐,公司的市场份额也逐渐扩大。

Bomar公司的发展小趣事

在环保意识日益增强的今天,Bomar公司积极响应全球环保号召,开始研发并应用环保材料。公司推出的生物基低聚物产品,完全或部分提取自植物或农作物等可再生原料,不仅降低了对石油产品的依赖,还具有低刺激性和低毒性的优势。这一创新举措不仅有助于提升Bomar公司产品的环保性能,也符合了市场对环保产品的需求趋势,为公司的可持续发展注入了新的动力。

这五个故事只是Bomar公司在电子行业发展过程中的一部分,但它们却展示了公司在技术创新、市场拓展、合作发展以及环保责任等方面的努力和成就。通过这些故事,我们可以看到Bomar公司如何紧跟时代步伐,不断适应和引领电子行业的发展趋势。

Franz Binder GmbH & Co公司的发展小趣事

随着电子行业的快速发展,Bomar公司逐渐意识到,仅仅依靠石英晶振产品已经无法满足市场的多样化需求。于是,在1988年,公司开始积极建立OEM客户群,将业务范围拓展至电信、计算机、医疗、安全、商业和工业等多个领域。通过与这些客户的紧密合作,Bomar公司不仅成功推出了时钟振荡器、VCXOs和TCXOs等新产品,还根据客户需求重新设计了制造流程,提升了产品性能和生产效率。

埃派克森微电子(Apexone)公司的发展小趣事

作为一家具有社会责任感的企业,埃派克森微电子在发展过程中始终关注社会公益事业。在四川汶川地震发生后,公司积极发起救援捐赠活动,通过中国扶贫基金会为灾区捐款10万元,帮助受灾民众度过难关。这一行动体现了埃派克森的社会责任感和人文关怀精神,也为公司在社会中树立了良好的形象。

这五个故事展示了埃派克森微电子在电子行业中的发展历程和取得的成就。从创新起步到专利技术的突破与商用,再到业绩的连续增长和国际化步伐的加快,以及积极履行社会责任的公益行动,都充分展现了埃派克森微电子的实力和担当。未来,随着科技的不断进步和市场需求的不断变化,埃派克森微电子将继续保持创新精神,不断提升产品性能和市场竞争力,为电子行业的发展做出更大的贡献。

问答坊 | AI 解惑

按摩器

 概述 ---微电脑自动控制,自动定时,按摩方式、强度、速度可随意选择调节。   ---集揉捏、推拿、锤打、红外线、振动等功能为一体,科学的组合,提供 -----全新的按摩享受。 ---双红外线热灸装置,可产生红外线热波促进血液循环。 ...…

查看全部问答>

有谁知道这个错误

有谁知道这个错误!有谁知道在WINCE下面出现SDNdis: Failed to get active path key这个错误提示是什么原因?…

查看全部问答>

sim300c 键盘使用

我是初学者,请问:sim300c模块如何进行键盘控制,比如,按下一个键,模块收到后发到超级终端,显示一下这个键是什么值。 我手里有sim300c的AT指令的pdf文档,但上面只有AT+CKPD这条命令与键盘有关,但它是模拟键盘按键,我想要实际键盘的控制。 ...…

查看全部问答>

上海哪里有专门卖工具安装盘的地方?

我想买个novell netware的安装程序,网上找不到,只能到这里问问哪儿有卖安装盘的,去碰碰运气。 我的email:sunma345@sohu.com 谢谢了。…

查看全部问答>

求助-VxWorks任务异常退出

一个任务,有taskSafe/taskUnsafe保护,在保护的代码段内调用connectWithTimeout。通过打印发现,即使有taskSafe保护,任务仍然在connectWithTimeout以后异常退出了。之前之后都没有任何征兆,所有状态都是正确的!另外,该任务是动态加载的模块生成 ...…

查看全部问答>

op运放

本帖最后由 paulhyde 于 2014-9-15 09:22 编辑 op运放  …

查看全部问答>

STM32 串口发送问题

void Delay(vu32 i) {    u32 k;   for(k=0;k<i;k++)   {} }                    &n ...…

查看全部问答>

给力

楼主好样的 加油  祝你顺利…

查看全部问答>

Ihpone5 数据线最新款方案(可升级)

Ihpone5 数据线方案    这两天出新版的ihpone5数据线方案了大家知道吗。       现在市面上好多数据线用的都是OTP的芯片,外围电路多,还需要外挂晶振。而且因为是OTP的,不可升级,所以有很高的产品局限性。  ...…

查看全部问答>