日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

stm32 pwm频率与周期计算

發布時間:2023/12/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stm32 pwm频率与周期计算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

頻率

Fpwm = 100M / ((arr+1)*(psc+1))(單位:Hz)

  • arr 是計數值
  • psc 是預分頻值
  • 如:
    3. 主頻=100M
    4. arr=100
    5. psc=1000
    100,000,000/100/1000=1000Hz

    占空比

    duty circle = TIM3->CCR1 / arr(單位:%)

    TIM3->CCR1 是捕獲比較寄存器值
    從下面代碼可以看出TIM3->CCR1 就是對應的sConfigOC.Pulse
    arr對應htim5.Init.Period = 999;
    psc對應htim5.Init.Prescaler = 99;

    如果 arr=1000,TIM3->CCR1=500則pwm的占空比為50%,通過修改CCR1可以修改占空比,修改arr可以修改頻率

    /* TIM5 init function */ void MX_TIM5_Init(void) {TIM_MasterConfigTypeDef sMasterConfig = {0};TIM_OC_InitTypeDef sConfigOC = {0};htim5.Instance = TIM5;htim5.Init.Prescaler = 99;htim5.Init.CounterMode = TIM_COUNTERMODE_UP;htim5.Init.Period = 999;htim5.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;if (HAL_TIM_PWM_Init(&htim5) != HAL_OK){Error_Handler();}sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;if (HAL_TIMEx_MasterConfigSynchronization(&htim5, &sMasterConfig) != HAL_OK){Error_Handler();}sConfigOC.OCMode = TIM_OCMODE_PWM1;sConfigOC.Pulse = 0;sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;if (HAL_TIM_PWM_ConfigChannel(&htim5, &sConfigOC, TIM_CHANNEL_2) != HAL_OK){Error_Handler();}HAL_TIM_MspPostInit(&htim5);} static void TIM_OC1_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config){ ... /* Set the Capture Compare Register value */TIMx->CCR1 = OC_Config->Pulse; }

    總結

    以上是生活随笔為你收集整理的stm32 pwm频率与周期计算的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。