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

南京的网站建设公司哪家好seo培训网的优点是

南京的网站建设公司哪家好,seo培训网的优点是,wordpress插件推挤,怎么用自己主机做网站⏱️ ​一、核心配置函数​ ​定时器初始化与复位​ ​TIM_DeInit(TIM_TypeDef* TIMx)​ 复位定时器所有寄存器至默认值,用于重新配置前的清理。​TIM_TimeBaseInit(TIMx, TIM_TimeBaseInitTypeDef* initStruct)​ 配置时基单元:预分频器(PSC…

⏱️ ​一、核心配置函数

  1. 定时器初始化与复位

    • TIM_DeInit(TIM_TypeDef* TIMx)
      复位定时器所有寄存器至默认值,用于重新配置前的清理。
    • TIM_TimeBaseInit(TIMx, TIM_TimeBaseInitTypeDef* initStruct)
      配置时基单元:预分频器(PSC)、自动重装值(ARR)、计数模式(向上/向下/中央对齐)。
      static void TIM6_Config(uint32_t arr , uint32_t psc)
      {TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;// 开启定时器时钟,即内部时钟CK_INT=72MRCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);// 自动重装载寄存器的值,累计TIM_Period+1个频率后产生一个更新或者中断TIM_TimeBaseStructure.TIM_Period = arr;	// 时钟预分频数为TIM_TimeBaseStructure.TIM_Prescaler= psc;// 初始化定时器TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure);// 清除计数器中断标志位TIM_ClearFlag(TIM6, TIM_FLAG_Update);// 开启计数器中断TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);// 使能计数器TIM_Cmd(TIM6, ENABLE);	
      }
    • TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* initStruct)
      初始化时基结构体为默认值(PSC=0, ARR=0xFFFF)。
  2. 时钟源选择

    • TIM_InternalClockConfig(TIMx)
      选择内部时钟(默认)。
    • TIM_ETRClockMode2Config(TIMx, prescaler, polarity, filter)
      配置外部时钟模式2(ETR引脚输入,直接驱动计数器)。
      参数
      • prescaler:外部触发预分频(TIM_ExtTRGPSC_DIV2等)
      • polarity:触发极性(上升沿/下降沿)
      • filter:滤波器值(0-0xF)

📡 ​二、输入捕获功能

  1. 输入捕获初始化

    • TIM_ICInit(TIMx, TIM_ICInitTypeDef* icStruct)
      配置捕获通道参数:
      TIM_ICInitTypeDef ic;
      ic.TIM_Channel = TIM_Channel_1;      // 通道1
      ic.TIM_ICPolarity = TIM_ICPolarity_Rising; // 上升沿捕获
      ic.TIM_ICSelection = TIM_ICSelection_DirectTI; // 直接映射到TI1
      ic.TIM_ICFilter = 0x0A;              // 滤波器值
      TIM_ICInit(TIM5, &ic);
    • TIM_PWMIConfig(TIMx, TIM_ICInitTypeDef* icStruct)
      自动配置PWM输入模式(双通道捕获同一信号,测量占空比)。
  2. 捕获值读取与配置

    • uint16_t TIM_GetCapturex(TIMx)​(x=1~4)
      读取通道捕获值(如脉冲宽度)。
    • TIM_SetICxPrescaler(TIMx, TIM_ICPSC_DIVy)
      设置输入捕获分频(每y个边沿触发一次捕获)。

⚡ ​三、输出比较与PWM

  1. PWM通道初始化

    • TIM_OCxInit(TIMx, TIM_OCInitTypeDef* ocStruct)(x=1~4)
      配置PWM模式、极性、占空比:
      TIM_OCInitTypeDef oc;
      oc.TIM_OCMode = TIM_OCMode_PWM1;      // PWM模式1
      oc.TIM_Pulse = 500;                   // 占空比50%(ARR=1000时)
      oc.TIM_OutputState = TIM_OutputState_Enable;
      TIM_OC1Init(TIM2, &oc);
    • TIM_OCxPreloadConfig(TIMx, TIM_OCPreload_Enable)
      使能CCRx预装载(占空比更新同步)。
  2. 动态调节与高级控制

    • TIM_SetComparex(TIMx, value)
      运行时修改CCRx(占空比)。
    • TIM_ForcedOCxConfig(TIMx, TIM_ForcedAction_Active)
      强制输出高/低电平(用于紧急制动)。
    • TIM_OCxFastConfig(TIMx, TIM_OCFast_Enable)
      使能快速模式(匹配时立即改变输出,非默认的下一周期)。

🔄 ​四、编码器接口

  1. 编码器模式配置
    • TIM_EncoderInterfaceConfig(TIMx, mode, pol1, pol2)
      配置正交编码器接口:
      • modeTIM_EncoderMode_TI1(仅TI1计数)、TI2TI12(双沿计数)
      • pol1/pol2:通道极性(上升沿/下降沿触发)
      TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
    • TIM_SetCounter(TIMx, 0)
      重置编码器计数值(如归零位置)。

🔔 ​五、中断与事件管理

  1. 中断控制

    • TIM_ITConfig(TIMx, TIM_IT_CC1 | TIM_IT_Update, ENABLE)
      使能捕获/更新等中断事件。
    • TIM_GetITStatus(TIMx, TIM_IT_Update)
      查询中断标志位(SET/RESET)。
    • TIM_ClearITPendingBit(TIMx, TIM_IT_CC1)
      清除中断标志(中断服务函数中必须调用)。
  2. 事件生成

    • TIM_GenerateEvent(TIMx, TIM_EventSource_Update)
      软件触发更新事件(同步寄存器)。
    • TIM_UpdateDisableConfig(TIMx, ENABLE)
      禁止更新事件(防止ARR/PSC被意外修改)。

⚠️ ​六、高级控制功能

  1. 刹车与死区控制

    • TIM_BDTRConfig(TIMx, TIM_BDTRInitTypeDef* bdtrStruct)
      配置死区时间、刹车极性(仅TIM1/TIM8)。
      应用:电机驱动防止上下管直通。
      TIM_BDTRInitTypeDef bdtr;
      bdtr.TIM_DeadTime = 0x4F;    // 死区时间
      bdtr.TIM_BreakPolarity = TIM_BreakPolarity_High;
      TIM_BDTRConfig(TIM1, &bdtr);
    • TIM_CtrlPWMOutputs(TIMx, ENABLE)
      使能高级定时器的PWM输出(TIM1/TIM8需调用)。
  2. 主从模式同步

    • TIM_SelectMasterSlaveMode(TIMx, TIM_MasterSlave_Enable)
      使能主从同步(用于定时器级联)。
    • TIM_SelectOutputTrigger(TIMx, TIM_TRGOSource_Update)
      设置触发输出源(如更新事件触发其他定时器)。

⚙️ ​七、时钟源与触发控制

  1. 外部时钟配置

    • TIM_TIxExternalClockConfig(TIMx, TIxSource, polarity, filter)
      使用外部引脚TIx作为时钟源(如测频应用)。
    • TIM_ITRxExternalClockConfig(TIMx, TIM_TS_ITR0)
      使用内部触发输入(ITRx)连接其他定时器。
  2. 触发选择

    • TIM_SelectInputTrigger(TIMx, TIM_TS_TI1FP1)
      选择输入触发源(如TI1FP1用于从模式触发)。
    • TIM_SelectSlaveMode(TIMx, TIM_SlaveMode_Reset)
      设置从模式(复位模式:触发信号复位计数器)。

📊 ​八、寄存器操作函数

函数作用典型场景
TIM_SetCounter(TIMx, 0)重置计数器值编码器位置归零
TIM_SetAutoreload(TIMx, 5000)修改ARR值(需配合TIM_ARRPreloadConfig动态调整PWM频率
TIM_GetPrescaler(TIMx)读取当前预分频器值计算实际时钟频率
TIM_SetClockDivision(TIMx, TIM_CKD_DIV2)设置时钟分频(用于滤波器)降低输入噪声影响

💎 ​关键技巧与注意事项

// 配置PC6为TIM8_CH1输出
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8 | RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE);
GPIO_InitTypeDef gpio;
gpio.GPIO_Pin = GPIO_Pin_6;
gpio.GPIO_Mode = GPIO_Mode_AF_PP;  // 复用推挽输出
gpio.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &gpio);// 初始化TIM8 PWM
TIM_OCInitTypeDef oc;
TIM_OCStructInit(&oc);
oc.TIM_OCMode = TIM_OCMode_PWM1;
oc.TIM_Pulse = 400;  // 占空比40%(ARR=1000时)
TIM_OC1Init(TIM8, &oc);
TIM_CtrlPWMOutputs(TIM8, ENABLE);  // 高级定时器必需!
TIM_Cmd(TIM8, ENABLE);
 
  1. 预装载机制

    • ARR预装载​:TIM_ARRPreloadConfig(TIMx, ENABLE) 确保ARR更新同步(多通道PWM必备)。
    • CCR预装载​:TIM_CCPreloadControl(TIMx, ENABLE) 使CCR更新在UEV事件时生效。
  2. 中断服务函数模板

    void TIM2_IRQHandler(void) {if (TIM_GetITStatus(TIM2, TIM_IT_Update)) {// 处理定时任务(如刷新LED)TIM_ClearITPendingBit(TIM2, TIM_IT_Update); // 必须清除标志!}if (TIM_GetITStatus(TIM2, TIM_IT_CC1)) {uint16_t pulse = TIM_GetCapture1(TIM2); // 读取脉冲宽度TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);}
    }
  3. PWM频率与占空比计算
    FPWM​=(PSC+1)×(ARR+1)Fclk​​占空比=ARR+1CCR​×100%
    示例:72MHz时钟生成1kHz PWM(占空比50%)→ PSC=71ARR=999CCR=500


    STM32F103定时器全引脚映射表

    定时器通道默认引脚部分重映射引脚完全重映射引脚特性说明
    TIM1
    (高级)
    CH1PA8PE9-互补输出:PA7(CH1N)
    CH2PA9PE11-互补输出:PB0(CH2N)
    CH3PA10PE13-互补输出:PB1(CH3N)
    CH4PA11PE14-刹车输入:PA12(BKIN)
    TIM2
    (通用)
    CH1PA0PA15PB8注意:PA15与JTDI复用
    CH2PA1PB3PB9PB3默认JTDO,需禁用JTAG
    CH3PA2PB10PB10支持编码器模式
    CH4PA3PB11PB11外部触发:ETR@PA0
    TIM3
    (通用)
    CH1PA6PB4PC6重映射时PB4默认JTDO
    CH2PA7PB5PC7PB5默认JNTRST
    CH3PB0PB0PC8支持PWM输入捕获
    CH4PB1PB1PC9
    TIM4
    (通用)
    CH1PB6PD12-注意:PB6默认I2C1_SCL
    CH2PB7PD13-PB7默认I2C1_SDA
    CH3PB8PD14-
    CH4PB9PD15-
    TIM5
    (通用)
    CH1PA0--仅大容量型号支持
    CH2PA1--
    CH3PA2--
    CH4PA3--
    TIM8
    (高级)
    CH1PC6PI5-互补输出:​PA7​(CH1N)

    2

    4

    CH2PC7PI6-互补输出:​PB0​(CH2N)
    CH3PC8PI7-互补输出:​PB1​(CH3N)
    CH4PC9PI2-刹车输入:​PI1​(BKIN)

    5

    TIM6/7
    (基本)
    -无外部引脚--仅内部时钟,触发DAC用

    ⚙️ ​关键说明与注意事项

  4. 重映射配置流程

    • 使能AFIO时钟​:调用 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE)(标准库)或 __HAL_RCC_AFIO_CLK_ENABLE()(HAL库)。
    • 执行重映射​:
      // TIM3部分重映射至PB4/PB5(F1系列)
      GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);
    • 配置GPIO模式​:设置为复用推挽输出(GPIO_Mode_AF_PP)。
  5. TIM8特殊配置要求

    • 互补输出使能​:需调用 TIM_CtrlPWMOutputs(TIM8, ENABLE) 激活PWM输出。
    • 刹车功能​:配置刹车引脚(如PI1)为复用模式,Alternate Function选 ​GPIO_AF3_TIM8
    • 死区时间​:通过 TIM_BDTRConfig() 设置死区寄存器,防止电机驱动直通。
  6. 冲突引脚处理

    • JTAG/SWD引脚​(PA15/PB3/PB4):用作定时器通道时需禁用JTAG:
      GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);  // 保留SWD调试功能
    • I²C引脚​(PB6/PB7):用作TIM4通道时需关闭I²C外设时钟。
  7. 代码示例(TIM8_CH1 PWM输出)​

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

相关文章:

  • 番禺门户网站建设百度搜索收录入口
  • 淘宝美工做兼职的网站推广产品
  • 莱州相亲网站太原全网推广
  • 柳州做网站设计的公司微信引流推广精准粉
  • 台州市建设规划局网站班子成员seo优化的方法
  • 有经验的赣州网站建设今日头条官网
  • 长沙网站制作公司有哪些seo人才招聘
  • 深圳电商平台网站百度市场应用官方app
  • 门窗企业网站建设微信小程序怎么开通
  • 外国网站签到做任务每月挣钱黄页网络的推广软件
  • 响应式网站开发毕业论文搜索指数的数据来源
  • 营销网站建设内容如何利用网络广告进行推广
  • 广西企业响应式网站建设公司哈尔滨企业网站模板建站
  • 做网站免费空间优化关键词排名公司
  • 建设网站转赚钱吗百度账号人工申诉
  • 广西网站建设费用百度seo建议
  • 怎么做优惠券网站权重查询工具
  • 电子商城网站制作数据库长沙全网推广
  • php网站开发的发展前景江门网站建设
  • 17网站一起做网店增城合肥网络公司
  • 网站推广软件推荐推广网站大全
  • 网站收录排名怎么做昆明seo技术培训
  • 怎样进入网站的后台电子技术培训机构
  • 长春网站制作诚推源晟市场调研方案怎么写
  • 哪个网站专门做高清壁纸南阳seo
  • 郑州做网站优化价格新余seo
  • 快手作品推广网站农产品营销方案
  • js代码放wordpress哪里谷歌seo新规则
  • 特价旅游机票网站建设4p 4c 4r营销理论区别
  • 网页设计1000字心得seo研究中心qq群