历史上的今天

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

正在发生

2019年09月24日 | STM32F1x系列——外部中断

发布者:化羽2015 来源: eefocus关键字:STM32F1x系列  外部中断 手机看文章 扫描二维码
随时随地手机看文章

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

 

二 计数器模式:


(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闪烁

关键字:STM32F1x系列  外部中断 引用地址:STM32F1x系列——外部中断

上一篇:USART_ClearITPendingBith和 USART_ClearFlag的区别
下一篇:STM32F1x系列——定时器中断

推荐阅读

随着人们生活水平的不断提高,对产品服务的要求也发生了变化,消费端开始升级并带来新的挑战和机遇。而服务机器人似乎为新的时代而生,逐步开始进入社会,进入家庭,服务于平民大众。在2018世界机器人大会上,北京康力优蓝机器人科技有限公司创始人兼首席执行官刘雪楠认为,服务机器人最大的市场是面向家庭的服务机器人,如果从商业价值的角度来讲,最大的...
自2017年发布之后,特斯拉的电动卡车最近又有了动静。 据国外媒体报道,在推出并量产Model S、Model X等多款电动汽车之后,电动汽车厂商特斯拉在2017年11月推出了电动卡车Semi,预计2020年开始量产。 虽然特斯拉方面是计划在明年开始量产电动卡车Semi,但其原型车很早就已现身,近日又出现在了皮克斯总部。 外媒是在当地时间9月21日的报道中,提到电动...
20年来,中国电子产业的稳步发展离不开从业者们孜孜不倦地奋斗,时值慕展20周年即将到来之际,作为中国国内最具影响力的电子行业平台,小慕诚邀诸位“电子人”参与“e星球 · 跨越20年线上跑步挑战赛”系列活动,与慕展一同跑向20周年! 跨越20周年,一直奔跑的你值得拥有姓名 作为电子行业从业者,要有专业负责的职业精神,更要有健康积极的生活态度。参...
广告摘要声明广告【文/sya】9月22日,大族激光发布公告称,公司拟在四川省宜宾市投资建设大族激光新能源智能装备生产基地项目;公司拟在江苏省张家港市投资建设大族激光华东区域总部基地项目。公告分别显示,新能源智能装备生产基地项目规划总投资15亿元,一期投资5亿元,二期投资10 亿元;华东区域总部基地项目一期总投资不超过10亿元。大族激光表示,新...

史海拾趣

问答坊 | AI 解惑

开关电源的PCB设计规范

开关电源的PCB设计规范 在任何开关电源设计中,PCB板的物理设计都是最后一个环节,如果设计方法不当,PCB可能会辐射过多的电磁干扰,造成电源工作不稳定,以下针对各个步骤中所需注意的事项进行分析: 一、从原理图到PCB的设计流程 建立元件参数- ...…

查看全部问答∨

题目就要知道了。。。好紧张~好心焦

本帖最后由 paulhyde 于 2014-9-15 09:18 编辑 8点。题目准时公布,大家加油。。。一起到这里来热烈讨论阿~!  …

查看全部问答∨

vivi编程

贡献一vivi编程资料!…

查看全部问答∨

EPSON TSP700 打印位置设置的问题

    我在用EPSON TSP700的ESC\\POS 指令编程时只要碰到打印位置设置的指令就出不来,不是打印出奇怪字符就是没效果,比如在页模式下打印区域的设置就老出不来,很是郁闷。     请哪位做过的高手给我提示一二,最好能给个例子 ...…

查看全部问答∨

一个汇编

我是汇编初学者,希望大家帮忙给解决个问题 向内存0:200——0:23F依次传输数据0——63(3FH)谢谢大家了…

查看全部问答∨

嵌入式DM9000a的问题

我的嵌入式产品用的DM9000a, 用一台电脑能ping 通(偶尔丢包),不断电情况下,切换成另一台电脑,有时能ping通,有时ping 不通,并且10M/100M以及LINK灯灭,怎么回事啊?谢谢 …

查看全部问答∨

怎么判断ARM中断返回那一时刻

请问一下,怎么判断ARM中断返回,有没有判断中断已经返回的语句!! 我是利用中断来做实时性,我想抓住中断返回的那一时刻。 各位大侠能否用QQ交流一下: 214740556…

查看全部问答∨

对STM32F系列软件资料的看法

                                 TI提供了基于位域定义的许多芯片寄存器文件,在操作寄存器的时候只要直接对对应的位域赋值就可以,一目了然,非常 ...…

查看全部问答∨

压力传感器0-1mpa 输出电流4-20ma 求0.6ma对应的电流

压力传感器0-1mpa 输出电流4-20ma 求0.6ma对应的电流 有计算公式没 是线性关系吗? 有没有人做过类似的采集…

查看全部问答∨

MSP430最常用语句格式范例(汇编格式)

;---------------------------------------------------------------------------------- ;常量定义 ;---------------------------------------------------------------------------------- year equ 2004 ;当前的年月日 month equ 6 ;当写入F ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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