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

武汉免费建设网站平台线上宣传推广方式

武汉免费建设网站平台,线上宣传推广方式,企点邮箱登录入口,有学给宝宝做衣服的网站吗一、TIM定时器 STM32高级定时器实战:PWM、捕获与死区控制详解-CSDN博客 二、相关函数 1.TIM_TimeBaseInitTypeDef结构体讲解 typedef struct {uint16_t TIM_Prescaler; // 预分频器,用于设置定时器计数频率uint16_t TIM_CounterMode; /…

一、TIM定时器

STM32高级定时器实战:PWM、捕获与死区控制详解-CSDN博客

二、相关函数

1.TIM_TimeBaseInitTypeDef结构体讲解

typedef struct
{uint16_t TIM_Prescaler;         // 预分频器,用于设置定时器计数频率uint16_t TIM_CounterMode;       // 计数模式:向上、向下或中心对齐模式
// 自动重装载寄存器值,定时周期 = (TIM_Period + 1) * (Prescaler + 1) / Timer_Clockuint16_t TIM_Period;            uint16_t TIM_ClockDivision;     // 时钟分频(用于滤波器),对输入捕获/死区时间等有影响uint8_t  TIM_RepetitionCounter; // 重复计数器(高级定时器)
} TIM_TimeBaseInitTypeDef;

2.基本、通用、高级定时器

类型举例PWM输入捕获/输出比较死区控制互补输出重复计数器主从同步中断/定时功能
基本定时器TIM6、TIM7✅ 支持中断、定时
通用定时器TIM2~TIM5✅ 支持多种模式
高级定时器TIM1、TIM8✅ 功能最强大
分类功能特性常见用途
基本定时器只支持定时和中断简单定时中断、DAC 触发
通用定时器支持 PWM、输入捕获、输出比较等电机控制、PWM、信号测量
高级定时器通用功能 + 死区 + 互补 + 重复计数器等高级电机控制、逆变器、功率控制

3.TIM_ClearFlag函数讲解

用于 清除定时器中断/状态标志位。它的本质就是将 TIMx->SR 中某些标志位置 0。

void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_IT);
参数说明
TIMx要操作的定时器(如 TIM2, TIM3 等)
TIM_IT要清除的中断标志位,可以是以下值之一或它们的组合:
- TIM_IT_Update (更新中断)
- TIM_IT_CC1 ~ TIM_IT_CC4(通道中断)
- TIM_IT_Trigger(触发中断)
- TIM_IT_COM(通讯中断)
  • 必须清除标志位,否则定时器中断会不断重复进入。

  • 清除标志位 应该在中断处理函数中进行

  • 可以组合多个标志一起清除:

4.TIM_ITConfig函数讲解

开启或关闭指定的定时器中断源(如更新中断、捕获比较中断、触发中断等)。

void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);
参数名含义
TIMx要配置的定时器,例如 TIM1 ~ TIM17(取决于芯片型号)
TIM_IT中断类型
NewStateENABLEDISABLE,表示启用或关闭该中断
宏定义含义
TIM_IT_Update更新中断(即计数器溢出)
TIM_IT_CC1捕获/比较 1 中断
TIM_IT_CC2捕获/比较 2 中断
TIM_IT_CC3捕获/比较 3 中断
TIM_IT_CC4捕获/比较 4 中断
TIM_IT_Trigger触发中断
TIM_IT_COM通讯中断(高级定时器)
TIM_IT_Break断路器中断(高级定时器)

此函数 不会 配置 NVIC,必须另外调用 NVIC_Init() 注册中断号;

TIM_ITConfig() 会设置 TIMx->DIER(DMA/中断使能寄存器) 中对应中断的使能位;

5.TIM_GetITStatus函数讲解

用于 查询某个定时器中断是否触发 的函数。

ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);
参数说明
TIMx要查询的定时器(如 TIM1 ~ TIM17,具体取决于芯片型号)
TIM_IT要查询的中断源(如 TIM_IT_UpdateTIM_IT_CC1 等)

🔁 返回值:

  • SET:指定的中断标志已经被置位,即中断已经触发。

  • RESET:指定的中断标志未被置位。

TIM_GetITStatus() 会检查定时器的以下两个寄存器:

  1. TIMx->SR:状态寄存器,包含中断标志位

  2. TIMx->DIER:中断使能寄存器,对应中断是否使能

⚠️ 只有当中断标志位被置位,并且该中断已使能时,函数才返回 SET

6.TIM_ClearITPendingBit函数讲解

用于 清除定时器中断挂起标志位(Pending Bit)

void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);

当某个定时器中断发生时,标志位(比如 UIF)会在 SR 寄存器中置位,表示该中断事件已发生。如果不清除该标志位,下一次进入中断时,标志位仍然为1,会导致反复进入中断,造成“死循环”现象。因此,需要在中断服务函数中调用此函数清除中断标志位。该函数本质上就是对 TIMx->SR 寄存器中某些位写 0 来清除挂起标志。

void TIM3_IRQHandler(void)
{// 判断是否为更新中断if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET){TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  // 清除中断标志位// 执行你的中断处理逻辑}
}

7.TIM_ClearITPendingBit与TIM_ClearFlag有何区别

其实重点在Flag和IT,前者是外设的状态标志,而后者是外设的中断标志。状态标志就是一个外设它有自身的一些标志位(Flag),来表明它处于什么状态。中断标志就是使能外设的中断后,每次发生一次中断,它会表明发生了什么样的中断,同样中断也有相应的标记。两者分别靠函数TIM_GetFlagStatus()和函数TIM_GetITStatus()来获取。

TIM_ClearITPendingBit一般用于 中断服务函数中,防止中断反复进入。

TIM_ClearFlag通常用于轮询模式下清除标志位。

可以看出两个函数的实现基本一致。

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

相关文章:

  • 外贸网站设计制作优化推广南宁网站seo
  • 徐州网站建设外包网站引流推广
  • 制作app免费网站模板下载广州seo推广营销
  • 网站推广的方法搜索引擎河源今日头条新闻最新
  • 淄博网络公司做网站的电话seo站长优化工具
  • 重庆网站建设制作设计公司哪家好今日头条淄博新闻
  • 十大手机必备软件临沂seo排名外包
  • 用dw做的网站生成链接吗刚刚发生 北京严重发生
  • 洛阳住房与城乡建设厅网站百度指数怎么提升
  • 做公司的后台网站用什么软件好爱站网关键词查询工具
  • 武汉注册公司多少钱东莞seo优化案例
  • 长沙公司做网站大概多少钱手机助手
  • 手机版网站制作费用中文搜索引擎有哪些
  • 免费申请公司网站青岛seo网站排名
  • 中国建设银行官方网站e路航下载热门搜索
  • 北京城市雕塑建设管理办公室网站搜索引擎优化大致包含哪些内容或环节
  • 建个公司网站怎么弄h5制作
  • 河南做网站公司哪家好百度指数的主要功能有
  • 苹果手机做电影网站网络营销好找工作吗
  • 女主网站和男主做怎样注册个人网站
  • 上海专业做网站价格游戏广告推广平台
  • 表白网站在线制作软件淘宝店铺推广
  • html5 手机网站模板免费建网页
  • 哪里有可以做空比特币的网站杭州seo首页优化软件
  • 济宁500元网站建设贴吧友情链接在哪
  • 网站建设开发怎么选专业seo教程网站优化推广排名
  • 西安专业做网站江阴网站优化公司
  • 长沙网站seo分析seo实战培训教程
  • 韩式摄影网站源码查询百度关键词排名
  • 沈阳微营销网站制作百度客户端在哪里打开