你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

第七章:STM32CubeMx 普通PWM基本使用方法

[复制链接]
STMCU小助手 发布时间:2021-1-12 15:00
第七章:STM32CubeMx普通PWM基本使用方法
STM32CubeMx 普通PWM基本使用方法
本文实例说明:
这里是使用 TIM3_CH2输出 一个频率为50kHz;占空比为50% 的PWM信号。
1
先配置STM32CubeMX 参数,如图:

- A3 ~0 w/ j+ n; b
4.1.png
重点说明:
PWM 频率 = APB1 Timerclocks (MHz) / [(Prescaler+1) * (Counter Period+1)]
APB1 Timer clocks (MHz) :64MHz
Counter Period : 20
Prescaler :设置为64-1 那么此时PWM时钟设置为:
          f = 64000000 / 64 /20 = 50KHz
Pulse :设置为10 ,也就是占比为:10/20 = 50%
Fast Mode:如果频率太高可以使能快速模式。可以大大提高PWM反应时间;同时将IO口输出速度调高。
2
代码分析:
  1. static void MX_TIM3_Init(void)
    1 X5 P# A! E% p) q4 ~) z# L# z
  2. {
    5 Y' n* v* ~* Q: y( y% N% j' _

  3. ! r0 ]8 A: f; L! a) E
  4.   /* USER CODE BEGIN TIM3_Init 0 */
    5 Q0 s7 n8 H; ^" D+ w: J$ i( _; w3 `
  5. - ^: ~# M5 D5 c! T, V; z0 k, S, d
  6.   /* USER CODE END TIM3_Init 0 */
    # N, U: Z, B/ r3 K
  7. ' W" _. R0 [9 g- a  W9 Q
  8.   TIM_MasterConfigTypeDef sMasterConfig = {0};
    5 q; C, o4 T' T# l
  9.   TIM_OC_InitTypeDef sConfigOC = {0};
    / y8 Y3 e$ N. R, H* J; i
  10.   {1 p( N# F) {4 j" l6 J8 I
  11.   /* USER CODE BEGIN TIM3_Init 1 */. f# e! f: `" N+ c; `6 o- O" S
  12.   P' c) z4 E4 d
  13.   /* USER CODE END TIM3_Init 1 */! C8 D7 G! P7 C( [0 A0 a
  14.   htim3.Instance = TIM3;
    ( K( p" ?' P% t7 M: |; ?
  15.   htim3.Init.Prescaler = 64-1;
    - R7 a' x% D$ p: {$ X2 p
  16.   htim3.Init.CounterMode = TIM_COUNTERMODE_UP;# G" C' I9 S% W6 `
  17.   htim3.Init.Period = 20-1;
    . {' I5 x8 Y) E+ a9 P) S; Z4 a
  18.   htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;8 a: @/ `: O4 y
  19.   htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
    4 g( S. u9 d1 l
  20.   if (HAL_TIM_PWM_Init(&htim3) != HAL_OK)
    2 y5 b# K9 E7 i' P- o$ P% s4 q; [9 a  n
  21.   {
    # H$ B& w, Q* k3 ]+ F$ S
  22.     Error_Handler();  L  [: u, d/ q' \
  23.   }
    - @0 a1 [8 G/ ?5 F1 V% w
  24.   sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;% \! Q5 v( [+ C2 c5 @1 H3 ?9 X
  25.   sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
    0 }& J3 C+ _& l( h' {" Z
  26.   if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)- `' q6 p1 I. X4 E  t; e2 G" n8 k
  27.   {; i( G" q% @; k' d/ R  @& C
  28.     Error_Handler();6 B* W! t5 Q0 S9 E  |
  29.   }
    ; N4 S; t! z" W$ S% d; ^" [( J4 A
  30.   sConfigOC.OCMode = TIM_OCMODE_PWM1;% t$ o, }  [5 R4 L; W; v3 Q# P
  31.   sConfigOC.Pulse = 10;
    : B7 a% y9 X' e( T9 v4 _
  32.   sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
    * K& n4 ~! \  w
  33.   sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
    5 Y' f2 x( }4 V9 l" R2 R
  34.   if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
    , Y& V, V7 u1 g* \
  35.   {2 {5 _! N6 v0 a' X
  36.     Error_Handler();1 `- U4 q/ z1 M
  37.   }# ]' z& T" O" c, N2 s9 J
  38.   /* USER CODE BEGIN TIM3_Init 2 */
    / Y" q, r; v7 M4 j; H( z& x
  39.   HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2); //启动PWM输出函数
    % Z& @) B) m' T, e# p
  40.   __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, 10);//这个函数可以设置占空比
    : w, t3 V% i2 Y7 ~/ l& ?
  41.   /* USER CODE END TIM3_Init 2 */
    * [1 o% }. [! x! X1 E, H. X
  42.   HAL_TIM_MspPostInit(&htim3);
    6 _; D$ ^; g2 h5 N9 R* A
  43. % m3 T) X0 x, s- `8 D, w8 V
  44. }
复制代码

7 B0 w* ?( Q0 [1 ~2 w
3
实验现象:
4.2.jpg
文章出处: LinuxARM  电子爱好者
  Z$ Z% f( U% D  V* ~' a% N
收藏 评论0 发布时间:2021-1-12 15:00

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版