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

【经验分享】STM32G030F6使用CubeMx配置PWM实验

[复制链接]
STMCU小助手 发布时间:2021-11-11 22:00
1. 使用 CubeMx 创建 PWM 工程
$ X: Q3 E  P2 W* x& y! w! h) a1 s. C打开 CubeMx 软件,选中我们此次使用的单片机型号 STM32G030F6P6 ,点击 StartProject.
: g! }* O. A, M0 |8 }  T+ P% m4 b1 a7 n7 B! ]( q# I  }
配置定时器1 u8 n/ X6 d) L9 h; @+ g% @4 A& k& U
2021012919392522.png
4 T2 @: B# T/ f; Q
$ V% w- d; Y0 {) k; A0 Q) |

2 L* N& t! H# i配置定时器1的通道1和通道2 产生PWM;
( f  T- _2 m+ ^4 R6 r& {' s4 H设置定时器1的主频:设置了( 63 + 1) 分频即定时器主频为1M
1 G8 f5 l/ Z. I  x- w* v设置PWM定时的周期计数为 1000 即 1000HZ3 e9 |; {9 z0 L  c

) D! U1 Q. K, P2 J
20210129194500268.png
* p8 C3 G/ H: G; s+ N
$ Q% e8 ]1 E/ i: B' _0 r
设置通道一 翻转的计数值为 500 即占空比为 50%
8 Q: W' R8 [7 `3 ~8 [- ]设置通道二 翻转的计数值为 200 即占空比为 20%
9 @( g* y+ E8 S3 K; p
. o( C3 ?: C% B8 |& l  U# X. D配置时钟
/ N$ @4 e0 d  S% u9 t# a: m1 V
20210129194625281.png

, m7 _% b- {  f- Q" j# @& L# e; ~$ R# Z6 S- u
使用内部高速时钟,将主频倍频到64MHZ7 D4 w0 }0 `: `9 f: T6 G. X
: l6 ^5 ~6 a" p9 V  s
配置工程相关选项" S% j( a% J% B6 h# R1 D9 I, n' P

' I! R+ I: F5 N" x- h4 }1 Y1 }1 z
20210129194748518.png
: d5 n2 x  O' b& I% L

6 `6 T' C5 d6 u7 w
: M5 x; @9 ~' Y* i7 V配置完成后点击右上角 GENERATE CODE完成工程的创建" Z& C$ D/ P3 s! u

; a% n& w+ [( d4 q9 N: K$ u2. 编程
) @- c; z  H8 l/ N+ i' v定时器的初始化函数都已经由CubeMx生成,我们仅需要打开 PWM的使能即可
: R3 _+ W9 W# U! F0 y, w* |' C. }1 ~) `  I
  1. /**  C9 c9 W; I5 ?
  2.   * @brief  The application entry point.
    / f+ j; N$ v$ B' H, y% V* c
  3.   * @retval int) b. P4 A% g: Q' j; B$ _1 }
  4.   */1 D( f- Y/ k1 f3 q/ j( i7 H
  5. int main(void)( A' I/ E; L, w) r) p( c& W
  6. {
    ! g1 A% }) }" f2 H- m
  7.     /* USER CODE BEGIN 1 */1 d: `3 W: }" c: N" h. k: ]7 v; d
  8. 8 n4 U3 w; S5 \* q9 K/ N# Z! A; k
  9.     /* USER CODE END 1 */' H+ K- h" e& V* x& h6 {4 |

  10. : A  S1 G- I! R. d
  11.     /* MCU Configuration--------------------------------------------------------*/* N3 u' e! [5 H- d4 U* L% O# r
  12.   {% G9 S  `/ r
  13.     /* Reset of all peripherals, Initializes the Flash interface and the Systick. */, J) G$ b) q7 Z( ]3 X* v
  14.     HAL_Init();. T$ I* F0 n9 N

  15.   u; v$ j9 ~: S$ h' b
  16.     /* USER CODE BEGIN Init */
    2 B3 J# x7 l0 p
  17. 7 T" j8 [2 X# V, L- w+ i
  18.     /* USER CODE END Init */3 h% _/ y# r7 y+ I  f: c# R

  19. : w$ P" u( X, v& n  `7 n# W" C
  20.     /* Configure the system clock */
    2 t" n: j9 \5 u' H, ~  Z
  21.     SystemClock_Config();8 k5 s4 V+ g3 L

  22. * B" o* k9 m- A' S' P: k
  23.     /* USER CODE BEGIN SysInit */  I  H9 X) W( g3 y* l$ {+ N3 ?9 X
  24. - v  e: \* u- m$ y( |1 i# f2 C
  25.     /* USER CODE END SysInit */
    : t) {7 w1 q3 ^8 W

  26. . C( e& \, R4 E6 C5 {' ]
  27.     /* Initialize all configured peripherals */
    7 Q2 _# x6 P0 t  |; C' i4 L
  28.     MX_GPIO_Init();& ?9 N) h5 F7 a4 `3 ^1 [
  29.     MX_TIM1_Init();4 f% L( f  D( ~/ _  E
  30.     /* USER CODE BEGIN 2 */& k; r! R- k5 @' A; J6 ~% C
  31.     HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);   //1000HZ 50%占空比的PWM
    1 ^' k& Z2 Z7 A' ?- @9 A
  32.     HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);   //1000HZ 20%占空比的PWM9 T7 s: G, N5 M( n" K6 m
  33.     /* USER CODE END 2 */
    8 u; G0 s& t& d& l* }' a& s9 `
  34. . E9 D% f" ]" [1 y* p& r$ {
  35.     /* Infinite loop */
    # a! A# ~  s0 V8 r
  36.     /* USER CODE BEGIN WHILE */
    6 Y: M' ^1 s) i: }) U9 v8 [
  37.     while(1)3 F6 H( L  M+ H. ^1 U
  38.     {; ]) Z5 [# p8 m( [, c1 b! b
  39.         /* USER CODE END WHILE */5 I9 A( y) x* }# |
  40. 7 z  |; v9 v8 S; X2 S$ }2 ?8 e
  41.         /* USER CODE BEGIN 3 */
    . t( m7 g& {! L/ H1 A$ U1 [
  42.     }, V; Y8 h% c8 ], \* e" f# h
  43.     /* USER CODE END 3 */0 h, t$ U6 h- \7 y
  44. }
复制代码
5 @9 r! _$ y& n( t( f
可以使用一下函数修改PWM的占空比
+ X( S: s& s" E/ R9 t3 {
) n8 k8 G' H% p9 D
  1. // 使用此宏定义修改占空比+ N$ h1 }1 `* ~& d, B# c# x
  2. __HAL_TIM_SetCompare(__HANDLE__, __CHANNEL__, __COMPARE__)
复制代码
例如:) H! r. q7 I; g1 T  b+ R, u) ]) ~
/ M  @/ z# w& i# [) E! e4 P
  1. // 将定时器1的通道1 翻转计数修改为 800,在我们的例程上正好就是800/1000 即 80% 的占空比
    % F) G# x- i8 a2 r0 k2 i
  2. __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1,800);
复制代码
0 u; _5 c$ j. _/ E  n
3. 实验现象
# b$ y7 S2 x  R% b. ]编译并将工程下载到开发板后,使用示波器或者逻辑分析器查看 PA8 和 PB3 引脚是否输出 1000HZ 且占空比分别为 50% 和 20% 的方波。
: X" c+ y9 a. R$ t- g/ L) l- X, y) h

  y) x" r# Y( `1 y
# [) d# d6 x4 N9 d" K+ q4 `
收藏 评论0 发布时间:2021-11-11 22:00

举报

0个回答

所属标签

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