当前位置: 首页 > news >正文

做兼职网站赚钱吗网站开站备案

做兼职网站赚钱吗,网站开站备案,石材公司网站源码,网站程序基础STM32 TIM(定时器/计数器)模块的中断流程如下: 配置TIM寄存器:首先,通过配置TIM相关的寄存器来设置计时器的基本参数,例如预分频系数、计数模式、计数器周期等。 使能TIM中断:使用TIM_ITConfig函…

在这里插入图片描述

STM32 TIM(定时器/计数器)模块的中断流程如下:
配置TIM寄存器:首先,通过配置TIM相关的寄存器来设置计时器的基本参数,例如预分频系数、计数模式、计数器周期等。
使能TIM中断:使用TIM_ITConfig函数或者直接操作TIM的相关寄存器,将所需的中断使能位置1。可以选择使能不同类型的中断,如更新中断、比较中断等。
配置NVIC中断:通过配置NVIC(Nested Vectored Interrupt Controller)的相关寄存器,设置中断优先级和中断向量。可以使用NVIC_Init函数或者直接操作NVIC相关寄存器来完成配置。
编写中断服务程序(ISR):在中断发生时,处理器会跳转到相应的中断服务程序。在中断服务程序中,根据需要进行相应的处理操作,例如读取标志位、清除中断标志、处理中断逻辑等。
中断结束与返回:在中断服务程序的最后,使用return指令退出中断服务程序,并将控制权返回到主程序。
接下来是时基单元的各个部分的作用:
预分频器(Prescaler):预分频器用于控制计数器的时钟频率。通过设置预分频系数,可以将外部时钟频率分频得到内部时钟频率供计数器使用。
计数器(Counter):计数器是TIM模块中的关键部分,用于记录计时或计数的值。根据不同的计数模式,计数器可以向上、向下或双向计数。
自动重载寄存器(Auto-reload Register):自动重载寄存器确定了计数器溢出的点,也即计数器的周期值。当计数器达到自动重载寄存器的值时,计数器会重新从0开始计数。
比较寄存器(Compare Register):比较寄存器用于与计数器的值进行比较。可以设置一个或多个比较值,并在计数器的值与某个比较值相等时触发中断或产生某个特定的事件。
控制寄存器(Control Register):控制寄存器用于配置和控制TIM模块的工作方式,如使能或禁止计时器、选择计时器的工作模式、使能或禁止中断等。
中断与事件(Interrupts and Events):TIM模块支持多种中断和事件,如更新中断(计数器溢出时触发)、比较中断(计数器与比较值相等时触发)等。可以根据需要选择使能或禁止相应的中断或事件,以实现特定的功能。
时基单元通过预分频器、计数器和自动重载寄存器的组合,实现了定时或计数的功能。通过与比较寄存器的结合,可以产生不同的中断或事件,实现更加灵活和高级的定时和计数功能。

函数解析

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE)是一个函数调用,用于使能TIM2外设的时钟。它的作用是将控制寄存器中的时钟使能位设置为1,以启用TIM2外设的时钟。TIM_InternalClockConfig(TIM2)是另一个函数调用,用于将TIM2的时钟源配置为内部时钟。这意味着TIM2将使用内部时钟作为其时钟源。接下来是对TIM2进行基本时间基准的初始化:首先创建一个名为TIM_TimeBaseInitStructure的结构体变量,用于配置TIM2的基本参数。TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStructure.TIM_Period = 10000 - 1;
TIM_TimeBaseInitStructure.TIM_Prescaler = 7200 - 1;
TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);
TIM_ClockDivision是时钟分频系数,这里设置为TIM_CKD_DIV1,表示不分频。
TIM_CounterMode是计数模式,这里设置为TIM_CounterMode_Up,表示向上计数。
TIM_Period是计数器的周期值,即计数器溢出前的总数。这里设置为10000-1,所以计数器将在10000个时钟周期后溢出。
TIM_Prescaler是预分频系数,用于控制计数器的时钟频率。这里设置为7200-1,所以计数器的时钟频率为72MHz / (7200-1+1) = 10kHz。
TIM_RepetitionCounter是重复计数器的值,用于产生重复计数器更新事件。这里设置为0,表示不使用重复计数器。
接下来是使能TIM2的更新中断:TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
这个函数调用将TIM2的更新中断使能位置为1,允许产生更新中断。然后是配置NVIC中断优先级分组:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
这个函数调用将NVIC中断优先级分组设置为2,意味着优先级分为4位抢占优先级和0位子优先级。接下来是对NVIC中断进行初始化配置:首先创建一个名为NVIC_InitStructure的NVIC_InitTypeDef结构体变量,用于配置NVIC中断参数。NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_Init(&NVIC_InitStructure);
NVIC_IRQChannel是指定要配置的中断通道,这里设置为TIM2_IRQn,表示要配置TIM2的中断。
NVIC_IRQChannelCmd是中断使能控制位,这里设置为ENABLE,表示使能TIM2的中断。
NVIC_IRQChannelPreemptionPriority是抢占优先级,这里设置为2。
NVIC_IRQChannelSubPriority是子优先级,这里设置为1。
最后是使能TIM2外设:TIM_Cmd(TIM2, ENABLE);
这个函数调用将TIM2的使能位设置为1,以使TIM2外设开始工作。

中断函数

void TIM2_IRQHandler(void)
{if (TIM_GetITStatus(TIM2, TIM_IT_Update) == SET){Num ++;TIM_ClearITPendingBit(TIM2, TIM_IT_Update);}
}
http://www.yayakq.cn/news/971451/

相关文章:

  • 如何用电脑记事本做网站营销网站手机站
  • 济宁市建设局网站平台推广的方法有哪些
  • 网站抓取诊断ip出错wordpress 去购买按钮
  • 网站做全景图举例说明什么是网络营销
  • 做网站要提供营业执照吗wordpress版本回退
  • 哈尔滨网站定制公司二次开发收费需要高点
  • 中国纪检监察报总编辑咸阳网站建设seo
  • 网站如何设置404页面开工作室需要什么条件
  • 合肥 电子商务 网站推广网站制作排行榜
  • wordpress网站能APP吗seo网站模版
  • nike建设网站的目的网络建设公司经营范围
  • 如何在手机做网站wordpress 培训插件
  • 宠物网站制作费用明细杭州最新消息今天
  • 职业生涯规划大赛优秀作品网站建设优化服务流程
  • 网站建设方案设计网站制作公司-山而
  • 做海报找图片的网站中小企业网络规划与设计
  • 做网站月薪资多少钱做网站月入
  • 嘉兴市做网站优化全国代运营最好的公司
  • 建设英文网站的请示wordpress 503
  • 海淀网站开发洛阳做网站找哪家
  • wap建站程序哪个好王野天津音乐广播
  • 个人名义做网站能备案吗做seo的网站推广
  • 电子商务网站建设维护有没有欺骗国内著名展馆设计公司报价
  • 重庆做网站好的公司潍坊网站建设wfyckj
  • 云南住房和城乡建设厅网站wordpress 局域网 慢
  • 网站运营与维护是什么seo 网站关键词
  • 佛山网站设计是广东省建网站公司
  • 梅州新农村建设网站深汕特别合作区邮政编码
  • 潍坊手机网站本机网络ip做网站
  • 学校网站建设网站wordpress营销型大气