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

温州网站策划河南建设工程网

温州网站策划,河南建设工程网,nginx wordpress 404,国外室内设计网站大全网站1. 中断标志位(Interrupt Flag) 作用: 中断标志位位于外设寄存器中(如定时器的TIMx_SR、GPIO的EXTI_PR等),用于指示某个特定事件是否发生(例如定时器溢出、GPIO引脚电平变化)。该标志…

1. 中断标志位(Interrupt Flag)

  • 作用
    中断标志位位于外设寄存器中(如定时器的TIMx_SR、GPIO的EXTI_PR等),用于指示某个特定事件是否发生(例如定时器溢出、GPIO引脚电平变化)。该标志位由硬件自动置位,但通常需要软件手动清除。

  • 对上一段文字解释:TIMx_SR定时器(Timer)的 状态寄存器(Status Register)、EXTI_PR(External Interrupt Pending Register)是外部中断/事件控制器(EXTI)的挂起寄存器(Pending Register),用于标识外部中断请求是否已触发但未被处理】

  • 关键点

    • 事件触发:当外设检测到事件(如定时器溢出)时,硬件自动置位对应的中断标志位。

    • 中断请求生成:若外设的中断使能位(如TIMx_DIER中的使能位)已开启,则中断标志位会触发中断请求。

    • 手动清除:在中断服务程序(ISR)中,必须通过软件清除标志位(例如写1TIMx_SR的对应位),否则会重复触发中断。

2. 中断挂起位(Interrupt Pending Bit)

  • 作用
    中断挂起位位于NVIC(嵌套向量中断控制器)的寄存器中(如NVIC_ISPR),用于表示某个中断请求已到达NVIC并等待处理。当多个中断同时发生时,NVIC会根据优先级调度中断。

  • 关键点

    • 自动管理:当外设的中断请求被触发且未被屏蔽时,NVIC会自动置位对应的挂起位。

    • 硬件清除:当中断被响应(CPU开始执行ISR)时,挂起位由硬件自动清除,无需软件干预。

    • 强制挂起:软件可通过写NVIC_ISPR手动置位挂起位,模拟中断请求(用于调试或特殊场景)

 

两者的协作流程

  1. 事件发生:外设检测到事件(如定时器溢出),硬件置位中断标志位

  2. 中断请求:若外设中断已使能,NVIC的挂起位被置位,表示中断请求已提交。

  3. 中断响应:CPU根据优先级处理中断,硬件自动清除挂起位,跳转到ISR。

  4. 处理中断:在ISR中,软件需手动清除外设的中断标志位,避免重复触发。

  5. 退出中断:中断处理完成,CPU恢复原任务。

 

3. TIM_ClearFlag 函数

  • 作用
    清除定时器状态寄存器(TIMx_SR)中的事件标志位。这些标志位指示硬件事件的触发(如定时器溢出、捕获/比较事件等),无论是否启用了中断

  • 使用场景
    当需要处理事件(Event)而非中断时,例如:

    • 使用轮询方式检测事件(如定时器溢出)。

    • 清除不需要触发中断的事件标志。

  • 函数原型(以STM32标准库为例):

    void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
  • 参数

    • TIMx:定时器实例(如TIM1TIM2)。

    • TIM_FLAG:事件标志,如TIM_FLAG_Update(溢出标志)、TIM_FLAG_CC1(通道1捕获标志)等。

  • 底层操作
    直接对 TIMx_SR 寄存器写入掩码,清除指定标志位。

4. TIM_ClearITPendingBit 函数

  • 作用
    清除定时器状态寄存器(TIMx_SR)中的中断标志位。这些标志位与中断相关,需在中断服务程序(ISR)中手动清除,以避免重复触发中断。

  • 使用场景
    专门用于中断处理。当外设的中断使能位(如TIM_IT_Update)被启用时,需通过此函数清除对应的中断标志位。

  • 函数原型

    void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);
  • 参数
    • TIM_IT:中断类型,如TIM_IT_Update(溢出中断)、TIM_IT_CC1(通道1捕获中断)等。

    • TIMx:定时器实例。

  • 底层操作
    与 TIM_ClearFlag 类似,直接操作 TIMx_SR 寄存器,清除指定中断标志位。

 


关键区别

特性TIM_ClearFlagTIM_ClearITPendingBit
设计目的处理事件(Event)处理中断(Interrupt)
参数类型事件标志(TIM_FLAG_xxx中断类型(TIM_IT_xxx
底层操作清除 TIMx_SR 中的事件标志清除 TIMx_SR 中的中断标志
适用场景轮询模式或无需中断的事件处理中断服务程序(ISR)

 

为什么需要两个函数?

STM32库通过参数语义区分两种场景:

  1. 事件(Event)
    表示硬件事件的发生(如定时器溢出),可能不涉及中断(例如通过轮询检测事件)。
    使用 TIM_ClearFlag 更符合语义。

  2. 中断(Interrupt)
    表示中断请求的触发,需在ISR中清除标志位以防止重复中断。
    使用 TIM_ClearITPendingBit 明确代码意图。

 

底层实现的一致性

尽管两者的功能看似重复,但它们的参数值可能相同。例如:

  • TIM_FLAG_Update 和 TIM_IT_Update 可能对应 TIMx_SR 的同一个位(如位0)。

  • 函数内部操作完全一致:均通过写 TIMx_SR 清除标志位。

示例代码

场景1:轮询检测定时器溢出
// 检测溢出事件(不启用中断)
if (TIM_GetFlagStatus(TIM2, TIM_FLAG_Update) == SET) {// 处理事件TIM_ClearFlag(TIM2, TIM_FLAG_Update); // 清除事件标志
}

 场景2:中断处理

// 中断服务程序
void TIM2_IRQHandler(void) {if (TIM_GetITStatus(TIM2, TIM_IT_Update) == SET) {// 处理中断TIM_ClearITPendingBit(TIM2, TIM_IT_Update); // 清除中断标志}
}

 

总结

  • 功能相同:两者最终均清除 TIMx_SR 中的标志位。

  • 语义区分

    • TIM_ClearFlag:强调事件处理(可能与中断无关)。

    • TIM_ClearITPendingBit:专用于中断上下文,提高代码可读性。

  • 推荐实践
    在ISR中使用 TIM_ClearITPendingBit,在非中断场景使用 TIM_ClearFlag

TIM_ClearFlag() 和 TIM_ClearITPendingBit() 本质上清除的是同一个寄存器(TIMx_SR)中的同一个标志位,但两者的设计意图和适用场景不同。以下是关键总结: 

 

1. 底层操作完全相同

  • 目标寄存器:两者最终都是操作 TIMx_SR(定时器状态寄存器)的同一个标志位。
    例如

    • TIM_ClearFlag(TIM2, TIM_FLAG_Update) 和 TIM_ClearITPendingBit(TIM2, TIM_IT_Update) 都会清除 TIM2_SR.UIF(更新中断标志位)。

 

2. 区别在于语义和用途

函数设计目的参数类型适用场景
TIM_ClearFlag()清除事件标志(无论中断是否使能)TIM_FLAG_xxx(如TIM_FLAG_Update轮询模式、非中断事件处理
TIM_ClearITPendingBit()清除中断标志(专用于中断上下文)TIM_IT_xxx(如TIM_IT_Update中断服务程序(ISR)内部

 

3. 为什么STM32库要提供两个函数?

  • 代码可读性

    • 在ISR中使用 TIM_ClearITPendingBit() 更明确地表示“这是中断处理的一部分”。

    • 在轮询模式下使用 TIM_ClearFlag() 表示“仅清除事件状态,不涉及中断”。

  • 参数语义分离

    • TIM_FLAG_xxx 强调事件状态(如定时器溢出)。

    • TIM_IT_xxx 强调中断请求(需配合中断使能位 TIMx_DIER)。

http://www.dtcms.com/wzjs/615753.html

相关文章:

  • 建设工程监理考试网站医院网站建设技术方案
  • 镇江百度送网站凡科做的网站被举报了会怎么样
  • 宜城建设局网站旅行社网站设计方案
  • 简洁页面心情网站wordpress 电影天堂 主题
  • 老薛主机做两个网站南充房价2023新楼盘房价
  • 网站的规划与创建php电子商务网站源码
  • 揭阳装修网站建设修改wordpress的登陆地址
  • 网站公司苏州为什么网站需要静态化生成html
  • 常用网站有哪些番禺区移动端网站制作
  • 如何接北京网站制作网站开发维护求职信
  • 做赚钱问卷调查的网站网站纯色背景图怎么做
  • 泾阳做网站免费的企业黄页网站永久免费
  • 网站建设推广扬州seo上海公司
  • 车辆管理网站开发上市公司网站建设分析
  • 手机和pc网站做物流的可以在那些网站找客户
  • 嘉定建站公司建设银行官方网站登录
  • 建设机械网站哪家好平面设计师证报名入口
  • 修改网站需要什么网站建设英文专业术语
  • 沈阳网站推广运营公司wordpress字体颜色
  • 做电子商务网站建设工资多少长沙响应式网站建设
  • 政务公开网站项目建设书域名是什么意思
  • 网站如何做路由器网站开发知识产权
  • 网站seo优化效果网站 域名到期
  • 网站icp备案要钱么合肥市城乡建设网站
  • 架设个人网站资阳地网站seo
  • 南宁网站建设及推广网页设计答辩问题及答案
  • 网站建设方案步骤学网站开发跟那个专业最相近
  • 烟台建设协会网站网站开发网页加载很慢怎么办
  • 旅游网站建设需求说明书wordpress高仿主题下载
  • 湖南智能网站建设seo搜索引擎优化案例