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

盐城做网站价格网站建设步骤详解视频

盐城做网站价格,网站建设步骤详解视频,黄村做网站的公司,wordpress 截取中文在前两篇文章中#xff0c;我们探讨了 STM32 输入捕获的基础和 PWI 模式的工作原理#xff0c;特别是定时器的两个通道如何协同工作以捕获 PWM 信号。本文将进一步结合 STM32 标准库函数中的 TIM_PWMIConfig()#xff0c;来讲解如何通过库函数配置定时器实现 PWI 模式。 我…在前两篇文章中我们探讨了 STM32 输入捕获的基础和 PWI 模式的工作原理特别是定时器的两个通道如何协同工作以捕获 PWM 信号。本文将进一步结合 STM32 标准库函数中的 TIM_PWMIConfig()来讲解如何通过库函数配置定时器实现 PWI 模式。 我们将分析该函数的工作流程讲解它是如何通过不同通道的配置来捕获上升沿和下降沿信号并计算 PWM 信号的频率和占空比。 1. TIM_PWMIConfig() 函数概述 TIM_PWMIConfig() 函数专门用于配置定时器的 PWI 模式以捕获外部的 PWM 信号。该函数的核心功能是将定时器的两个输入通道通常是 CH1 和 CH2分别设置为捕获上升沿和下降沿信号从而实现对 PWM 信号周期和占空比的测量。 该函数主要完成了以下任务 输入捕获极性设置将一个通道如 CH1设置为检测上升沿另一个通道如 CH2设置为检测下降沿。通道选择为两个通道选择输入信号源CH1 直接输入CH2 选择间接输入。滤波和预分频器配置设置输入信号的滤波和预分频参数。 2. TIM_PWMIConfig() 代码分析 void TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct) {uint16_t icoppositepolarity TIM_ICPolarity_Rising;uint16_t icoppositeselection TIM_ICSelection_DirectTI;/* 检查参数有效性 */assert_param(IS_TIM_LIST6_PERIPH(TIMx));/* 配置与输入极性相反的通道极性 */if (TIM_ICInitStruct-TIM_ICPolarity TIM_ICPolarity_Rising){icoppositepolarity TIM_ICPolarity_Falling;}else{icoppositepolarity TIM_ICPolarity_Rising;}/* 配置与输入选择相反的通道选择 */if (TIM_ICInitStruct-TIM_ICSelection TIM_ICSelection_DirectTI){icoppositeselection TIM_ICSelection_IndirectTI;}else{icoppositeselection TIM_ICSelection_DirectTI;}if (TIM_ICInitStruct-TIM_Channel TIM_Channel_1){/* 配置TI1为上升沿捕获 */TI1_Config(TIMx, TIM_ICInitStruct-TIM_ICPolarity, TIM_ICInitStruct-TIM_ICSelection,TIM_ICInitStruct-TIM_ICFilter);/* 设置捕获预分频值 */TIM_SetIC1Prescaler(TIMx, TIM_ICInitStruct-TIM_ICPrescaler);/* 配置TI2为下降沿捕获 */TI2_Config(TIMx, icoppositepolarity, icoppositeselection, TIM_ICInitStruct-TIM_ICFilter);/* 设置捕获预分频值 */TIM_SetIC2Prescaler(TIMx, TIM_ICInitStruct-TIM_ICPrescaler);}else{/* 配置TI2为上升沿捕获 */TI2_Config(TIMx, TIM_ICInitStruct-TIM_ICPolarity, TIM_ICInitStruct-TIM_ICSelection,TIM_ICInitStruct-TIM_ICFilter);/* 设置捕获预分频值 */TIM_SetIC2Prescaler(TIMx, TIM_ICInitStruct-TIM_ICPrescaler);/* 配置TI1为下降沿捕获 */TI1_Config(TIMx, icoppositepolarity, icoppositeselection, TIM_ICInitStruct-TIM_ICFilter);/* 设置捕获预分频值 */TIM_SetIC1Prescaler(TIMx, TIM_ICInitStruct-TIM_ICPrescaler);} }3. 工作原理解析 3.1 上升沿与下降沿的捕获 在 PWI 模式中TIM_PWMIConfig() 函数的核心任务是通过对两个通道的极性配置实现 PWM 信号的输入捕获。以 TIM3 为例 CH1 捕获上升沿在函数中CH1 配置为检测 PWM 信号的上升沿捕获此时的计数器值。CH2 捕获下降沿CH2 配置为捕获下降沿从而获取信号的低电平时长。 该函数通过以下逻辑处理 根据通道设置判断 CH1 捕获上升沿CH2 捕获下降沿。如果配置为上升沿捕获CH1 的输入极性为 TIM_ICPolarity_Rising而 CH2 则配置为相反的极性 TIM_ICPolarity_Falling。两个通道同时捕获相同的输入信号通过 CH1 和 CH2 捕获到的不同时间点计算出信号的周期和占空比。 3.2 通道选择 函数中不仅配置了通道的极性还通过 TIM_ICSelection_DirectTI 和 TIM_ICSelection_IndirectTI 配置输入源 DirectTI直接输入对应的 TIx 信号源直接连接到输入捕获通道。IndirectTI间接输入另一个通道的输入信号作为该通道的捕获源。这在 PWI 模式中用于确保同一个引脚可以同时捕获上升沿和下降沿信号。 3.3 输入信号滤波和预分频 TIM_ICInitStruct-TIM_ICFilter 用于配置输入信号的滤波确保抖动或噪声较大的信号不会误触发输入捕获事件。而 TIM_ICInitStruct-TIM_ICPrescaler 则用于调整输入信号的分频率适用于需要对信号频率进行压缩测量的情况。 4. 基于标准库的完整 PWI 模式代码 void IC_Init(void) {// 使能GPIOA和TIM3时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);// 配置PA6为输入模式GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_IPU; // 上拉输入GPIO_InitStructure.GPIO_Pin GPIO_Pin_6; // PA6引脚GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_Init(GPIOA, GPIO_InitStructure);// 配置TIM3基本参数TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructre;TIM_TimeBaseInitStructre.TIM_ClockDivision TIM_CKD_DIV1;TIM_TimeBaseInitStructre.TIM_CounterMode TIM_CounterMode_Up;TIM_TimeBaseInitStructre.TIM_Period 65536 - 1; // 自动重装载值 (ARR)TIM_TimeBaseInitStructre.TIM_Prescaler 72 - 1; // 预分频值 (PSC)TIM_TimeBaseInit(TIM3, TIM_TimeBaseInitStructre);// 配置PWM输入捕获TIM_ICInitTypeDef TIM_ICInitStructure;TIM_ICInitStructure.TIM_Channel TIM_Channel_1; // 通道1TIM_ICInitStructure.TIM_ICPolarity TIM_ICPolarity_Rising; // 上升沿TIM_ICInitStructure.TIM_ICSelection TIM_ICSelection_DirectTI; // 直接输入TIM_ICInitStructure.TIM_ICPrescaler TIM_ICPSC_DIV1; // 输入不分频TIM_ICInitStructure.TIM_ICFilter 0xf; // 滤波TIM_PWMIConfig(TIM3, TIM_ICInitStructure);// 配置从模式为复位模式TIM_SelectInputTrigger(TIM3, TIM_TS_TI1FP1); // 选择TI1作为触发输入TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset); // 从模式为复位模式// 启动定时器TIM_Cmd(TIM3, ENABLE); }uint32_t IC_GetFreq(void) {return 1000000 / (TIM_GetCapture1(TIM3) 1); // 单位为Hz }uint32_t IC_GetDuty(void) {return (TIM_GetCapture2(TIM3) 1) * 100 / (TIM_GetCapture1(TIM3) 1); }5. 小结 通过对TIM_PWMIConfig()函数的分析我们进一步理解了如何通过 STM32 的标准库函数实现对外部 PWM 信号的捕获和测量。这不仅为开发者提供了更灵活的输入捕获配置方式也让我们看到了 STM32 定时器的强大功能。你在实际使用输入捕获功能时遇到过哪些挑战分享你的解决方法吧
http://www.hkea.cn/news/14376434/

相关文章:

  • 自己做网站的成本杭州做网站seo
  • 个别网站网速慢怎么做活动软文怎么写
  • pos机做网站推广长网址变成短网址
  • 域名搭建网站线上推广的目的
  • 网站开发流程有哪几个阶段编程入门先学什么软件
  • 网站备案 需要上传网站么青海公司网站建设哪家快
  • 做网站用什么cmswordpress调用栏目
  • 自己怎么开网站wordpress sticky_posts
  • 网站建设的前端用什么编程个人网站备案成功后怎么做
  • wordpress网站不安全wordpress整站源码
  • 物流公司响应式网站建设wordpress笑话主题
  • 企业做网站需要做哪些工作asp购物网站客户查看购物车
  • 微信的微网站是什么电子政务网站设计
  • 网站建立时间怎么查免费帮助建站
  • 医院网站建设公司求网址直接能看的2021
  • 网站做商标在那类照片网站模板
  • wordpress博客站搭建wordpress怎么修改数据库密码忘记
  • 杭州网站制作公司排名网站建设推广行业
  • 网站销售策划wordpress更新一直下载失败
  • wordpress网站百度数据大米网络营销推广方案
  • 为网站做电影花絮aliyun oss wordpress
  • 公司建设网站的申请招工 最新招聘信息怎么写
  • 网站开发公司基本业务流程图网站建设教程网站
  • 网站服务器租用售价上海最近热点事件
  • 部队织梦网站模板免费下载wordpress产品展示主题下载
  • 免费设计图网站设计微信网站建设
  • 辽宁省住房与城乡建设厅网站郑州建设网站企业定制
  • 中小学生在线做试卷的网站6企业邮箱注册哪家好
  • 网站流量提升方案wordpress免费字体
  • 保定网站建设公司哪家好wordpress视频教程百度云