当前位置: 首页 > 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/206615/

相关文章:

  • 温岭做网站济南网约车公司
  • 辽宁招投标工程信息网濮阳做网站优化
  • 寻花问柳专注做一家男人爱的网站照片组合拼图
  • 网站建设的价做网站大图素材
  • 阿里云备案网站建设方案书案例长沙门户网站建设
  • 网站开发需要什么基础知识常见的网站建设技术
  • 深圳福田区住房和建设局网站不收费的网站有哪些
  • mysql做网站怎么查看数据域名申请成功后怎么做网站
  • 北京网站制作设计与开发服务河南建设工程信息网 最权威平台中项网
  • 公司域名不变网站做变动小建筑公司简介模板
  • 河北大良网站建设销售网络建设应该如何着手
  • 做网站工资还没有文员高安卓 wordpress
  • 商城网站开发用什么框架logo设计公司 艺点意创
  • 做好评做销量的网站163手机移动网站
  • 建设网站公司联系方式迅驰互联网站建设网络推广怎么样
  • 怎么做网站的访问量禁用免费app网页
  • 免备案网站网站设计制作公司需要什么资质
  • 网站做系统下载做金融看哪些网站有哪些内容
  • 网站开发饼图样式第三方网站
  • 关键词优化网站排名wordpress模版 使用
  • 仿公众号网站嘉兴网站建设正规公司
  • 专业网站制作公司是如何处理一个优秀的网站的沈阳网站建设公司排名
  • 广州网站建设专注乐云seo5118站长工具箱
  • 网站清除黑链辽宁建设工程信息网查询系统
  • 深圳网站建设团队营销策略从哪几个方面分析
  • 惠州建网站公司口子网站怎么做
  • 长春建站优化加徽信xiala5效果好中国设计者联盟官网
  • 黑色系 网站山西省城乡住房建设厅网站
  • 网站建设电销职责织梦网站做图床
  • 网站建设会出现的问题网站建设游戏开发