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

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

[复制链接]
STMCU小助手 发布时间:2021-11-11 22:00
1. 使用 CubeMx 创建 PWM 工程1 y- y# G9 b, Z# c
打开 CubeMx 软件,选中我们此次使用的单片机型号 STM32G030F6P6 ,点击 StartProject.; y$ ]" W) C! P. ?" X; s9 E% q( ?3 `

+ P) B6 l0 O8 ~8 w# K9 w1 O7 u: [2 Z配置定时器* V' M( E0 E6 h4 m4 U# k
2021012919392522.png
! s' b+ {5 g$ I% s0 E1 J
3 Q% D& l5 p+ b

; \3 `, u5 z% S配置定时器1的通道1和通道2 产生PWM;5 t6 _# z: {# ?: Z( t( u4 V
设置定时器1的主频:设置了( 63 + 1) 分频即定时器主频为1M
7 y6 I4 H( C) s$ X% x- k% s$ {$ O设置PWM定时的周期计数为 1000 即 1000HZ
# I" Z7 h% e& {! K+ f  S. W# `6 x* ^- y
20210129194500268.png

6 D6 p# }9 u$ L  B8 ]% t6 i- [; ?# @% z' Y* W6 ]# l8 J) w
设置通道一 翻转的计数值为 500 即占空比为 50%/ w2 j2 K: @" v& Q, X+ R
设置通道二 翻转的计数值为 200 即占空比为 20%
3 v+ ?2 U! Z/ P7 Y
+ Q, D: ]/ A  \& T配置时钟& i, q. G- w- q0 I) b
20210129194625281.png

8 q9 D/ Y7 D3 }, e) a7 l9 z6 l3 k- c( b5 |' F  h' Z; c9 M
使用内部高速时钟,将主频倍频到64MHZ! j/ z8 E9 [. ?
6 {  ^0 u* j3 R$ H. q
配置工程相关选项
% T0 w0 Q/ N: b! D! \, W: e* w! y( ^& ~$ I8 t! u/ z
20210129194748518.png
5 c$ |7 s8 N$ V5 J

, N/ Q, w6 n9 D  G. N
4 ]1 k6 N+ }  a$ p配置完成后点击右上角 GENERATE CODE完成工程的创建
7 G/ L* S+ W) J, y: `& ]" E; H, Q+ {/ u* V) o; ^9 x
2. 编程
! a2 J! \! E1 [* z* {2 A定时器的初始化函数都已经由CubeMx生成,我们仅需要打开 PWM的使能即可6 z5 X6 w. |7 v8 n
* Y: _: J) r. m
  1. /**) }$ F% D! o4 L7 I8 E
  2.   * @brief  The application entry point.
    ) Q& m9 }7 }5 Z2 }$ H8 B8 f6 x
  3.   * @retval int
    6 i0 W/ u+ [+ L& y2 z
  4.   */" t% l9 T' S  L- k. q
  5. int main(void)& I. b+ J4 Z7 m6 C! \
  6. {2 K" P% G. `8 p
  7.     /* USER CODE BEGIN 1 */7 g6 P2 i9 J/ _1 e% R! {% y; [
  8. 4 w+ ?4 H4 z6 I  v8 E6 g
  9.     /* USER CODE END 1 */! {( V; [; _+ s/ E$ a- X% w
  10.   M9 {7 @9 T5 P5 P) e. E% q- C
  11.     /* MCU Configuration--------------------------------------------------------*/1 t* @8 o0 h1 I8 v5 m
  12. 0 q. g+ i& z9 N  b5 B1 r+ ]* q
  13.     /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
    , b& `2 T" w/ C2 b- W
  14.     HAL_Init();
    8 U* ?! e7 B( W/ i. i$ }: f4 G1 d' l

  15. 9 e0 W- V1 ?6 c9 S( z7 Y
  16.     /* USER CODE BEGIN Init */
    - X1 M. g: P) `; H7 G* U

  17. 8 T, }- a9 E9 V* U) j. W
  18.     /* USER CODE END Init */- _% L9 ?. E* e

  19. 1 K. P) P, T! ^5 \3 m2 @
  20.     /* Configure the system clock */, w# _& S) c9 f. C1 n
  21.     SystemClock_Config();0 n/ j# R! P$ C8 Y# |
  22. * V4 r* z0 y! Z, s( J+ E+ g$ [
  23.     /* USER CODE BEGIN SysInit */
    6 M/ P* @, ?7 }* w8 G- s5 O+ u

  24. " Q, M9 v, k7 G. N  `- q8 H9 n
  25.     /* USER CODE END SysInit */
    & p; {3 U7 c- B3 h$ i8 Y
  26. % T3 S& J9 M8 m8 N. O& H# p
  27.     /* Initialize all configured peripherals */
    % \# b3 }1 n* @: H1 i- G' n
  28.     MX_GPIO_Init();& j, \* y$ z8 P
  29.     MX_TIM1_Init();
    / x" y5 Y; A! X) S$ i+ o6 z8 Y& h: ~
  30.     /* USER CODE BEGIN 2 */0 @; ?3 ]3 ]$ k/ ?4 G
  31.     HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);   //1000HZ 50%占空比的PWM" b0 y4 f# G. v  r5 p
  32.     HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);   //1000HZ 20%占空比的PWM
    4 t# R2 G) V* k8 U- p' q3 c$ v
  33.     /* USER CODE END 2 */6 _0 e( m& u0 ]" `
  34. 3 a& k4 e. p2 \
  35.     /* Infinite loop */; p! m/ H! x9 W- ^$ ~' W
  36.     /* USER CODE BEGIN WHILE */2 z0 ^1 w/ k* t9 o/ G
  37.     while(1)
    . y& H1 S2 j8 r0 s; ]
  38.     {" l* p; ?2 k4 E" K$ L
  39.         /* USER CODE END WHILE */) \/ C, i: P1 b- y2 @5 O
  40. ; `8 }' F6 u; k
  41.         /* USER CODE BEGIN 3 */
      |6 ?* Z3 v4 f& A' X' X4 s$ ^
  42.     }- Y; Z7 ^6 F. ?5 r6 F9 r* L- g
  43.     /* USER CODE END 3 */
    1 Y% j1 j" ]. O: _8 H6 J
  44. }
复制代码
: x, Y0 C% h- G4 E7 k: K( [# i
可以使用一下函数修改PWM的占空比' l; t- |' {& P
5 j' t) [% r  P8 u% ^$ `) x7 d
  1. // 使用此宏定义修改占空比
      j/ b6 i/ I9 e
  2. __HAL_TIM_SetCompare(__HANDLE__, __CHANNEL__, __COMPARE__)
复制代码
例如:
6 s  i: f% Q3 n/ Y: ~, R8 J% L! x3 Z7 C. R0 U+ Z/ h
  1. // 将定时器1的通道1 翻转计数修改为 800,在我们的例程上正好就是800/1000 即 80% 的占空比) h5 F3 M1 Z6 }2 D) G6 O: ?
  2. __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1,800);
复制代码
3 A" K7 W1 m+ |/ e4 O
3. 实验现象
9 m0 D- S! o6 _" d编译并将工程下载到开发板后,使用示波器或者逻辑分析器查看 PA8 和 PB3 引脚是否输出 1000HZ 且占空比分别为 50% 和 20% 的方波。
' b  J, n2 u$ c# [. x. _- a9 ^3 D  V8 \- t( O

* d0 G. _5 v5 w9 d- s9 L) r
  S" v- F" \$ ]* W) x% X
赞 收藏 评论0 发布时间:2021-11-11 22:00

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版