zoukankan      html  css  js  c++  java
  • PWM输出

    PWM(Pulse Width Modulation),脉冲宽度调制。

    脉冲的频率由ARR控制,ARR越大频率越小;占空比由CCRx控制,CCRx越小占空比越大。

    捕获/比较通道的输出部分(通道1) :

    CCER:捕获比较使能寄存器

    CCMR:捕获比较模式寄存器

    OC:输出比较

    计数器寄存器(TIMx_CNT) 与捕获比较寄存器(CCR1)进行比较,TIMx_CCMR的OC1M控制向上捕获还是向下捕获,输出OC1erf,

    TIMx_CCER的CC1P控制输出极性,TIMx_CCER的CC1E控制输出使能。

    需要用到TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);

    TIM_OCInitTypeDef  TIM_OCInitStructure; 

      TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2
      TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
      TIM_OCInitStructure.TIM_Pulse = 0; //设置待装入捕获比较寄存器的脉冲值
      TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高

    TIM_OC1Init(TIM8, &TIM_OCInitStructure); //根据TIM_OCInitStruct中指定的参数初始化外设TIM8

      TIM_OC1PreloadConfig(TIM8, TIM_OCPreload_Enable);  //CH1使能输出比较预装载  

      TIM_ARRPreloadConfig(TIM8, ENABLE); //使能自动重装载的预装载寄存器

    (假如用到的pin脚需要重映射(Remap)应调用RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE)和GPIO_PinRemapConfig(GPIO_PartialReamp_TIMx,ENABLE)。)

    在main中调用TIM_SetComparex(ccrx)改变占空比;

  • 相关阅读:
    腾讯为什么会出Q立方浏览器?
    String,StringBuffer与StringBuilder的区别??
    Linux Socket编程(不限Linux)
    将div显示在屏幕正中央
    计算鼠标坐标是否在指定范围内
    正则
    ajax异步通信
    CSS Float 换行
    jQuery强大的jQuery选择器
    给display字段增加筛选功能
  • 原文地址:https://www.cnblogs.com/wk1992/p/10739110.html
Copyright © 2011-2022 走看看