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

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

[复制链接]
STMCU小助手 发布时间:2021-11-11 22:00
1. 使用 CubeMx 创建 PWM 工程1 j8 R8 v0 x+ e5 v2 R
打开 CubeMx 软件,选中我们此次使用的单片机型号 STM32G030F6P6 ,点击 StartProject./ i4 u8 p! p' M! |' y- y  N

( n  Y7 ?! ^4 U% D+ F5 |, g配置定时器& s/ e4 y! t. f8 L0 c+ h
2021012919392522.png

! g+ ^- T5 ^' K# B4 z/ @) f. w  u- m0 b( K

9 d5 M5 k0 t2 O; Z0 {1 \配置定时器1的通道1和通道2 产生PWM;- w8 f$ L1 N: ]" w4 }/ c
设置定时器1的主频:设置了( 63 + 1) 分频即定时器主频为1M
4 t6 ?6 L1 I3 h4 U# Z! J  u设置PWM定时的周期计数为 1000 即 1000HZ
. c' Y! U9 S" z+ X1 W  i. |) \" P# B
/ \3 m% q! u& T8 P) {
20210129194500268.png

; t" C1 y& R5 u' J& r
7 w( z, R2 [0 L3 C; ]2 H! r设置通道一 翻转的计数值为 500 即占空比为 50%. o1 |' H" J: A
设置通道二 翻转的计数值为 200 即占空比为 20%
: p1 h$ Q+ e3 @! o
: ~! x- B2 Z4 N7 v配置时钟
+ w8 t3 P" d1 h1 G: ~& W% ~# W. ^8 h4 j
20210129194625281.png
9 e. L6 G1 x: z0 F5 f3 A
4 I2 y" N+ a5 _+ ~7 f
使用内部高速时钟,将主频倍频到64MHZ, y, v$ u/ ^, F, R+ M

5 Y. y3 u0 u+ Q$ n3 e3 ^7 s配置工程相关选项
6 n& J& R" h- s/ ^* d, A& y3 b3 p% [2 b, l* i; y  C
20210129194748518.png

) i; a  N0 w6 o$ ~8 ^' Z7 R8 f$ Y7 O+ m& G! c& @

) F: F5 z4 G, `( a6 K' J配置完成后点击右上角 GENERATE CODE完成工程的创建
  D2 ]: t0 H5 w# |( Q* z& K4 F+ _/ v; `6 [) {
2. 编程
  _) k5 _% N: ~% }9 N( d" I/ T8 C. c- d定时器的初始化函数都已经由CubeMx生成,我们仅需要打开 PWM的使能即可: \9 V% S; |! n+ k9 B8 r3 U* Z

1 n2 s/ q$ W+ `$ ~
  1. /**; I$ U  h& [/ \0 n% C- [/ F
  2.   * @brief  The application entry point.5 c3 t  D1 z5 x3 R3 z; B) t
  3.   * @retval int
    2 C6 h  ]" m* E7 i6 ?
  4.   */' r( s) s+ t) v5 V. {" d* c; z+ [
  5. int main(void)
    6 `/ p+ Z( j" b) g
  6. {
    , ^  ^/ g5 [2 G+ r  [' l# V) u
  7.     /* USER CODE BEGIN 1 */( X+ `5 }2 D* m* }1 G' Z& q& v

  8. 1 l( h4 S" C: j: p( r
  9.     /* USER CODE END 1 */
    1 Q( A/ M# o& t& n2 B- c4 W" e
  10. ; g: }4 z7 M& i$ W% j* F
  11.     /* MCU Configuration--------------------------------------------------------*/
    ) J0 |& u7 G( _0 o2 P" u7 F2 Q* V

  12. & D3 @0 d2 t2 p
  13.     /* Reset of all peripherals, Initializes the Flash interface and the Systick. */) @; D! i% e- t# N% d* S6 _$ X
  14.     HAL_Init();
    2 n+ ]5 I- q0 \" h
  15. . T! b9 j8 E" `/ _* e- [) M
  16.     /* USER CODE BEGIN Init */8 Z& T5 W! k' t$ `3 _0 R$ `1 U% K
  17. * F: `1 Y' z( k+ V$ o/ t- _
  18.     /* USER CODE END Init */
    8 A( `# \* h) e2 g
  19. 1 s; e' {% L6 U; h) I3 T+ m
  20.     /* Configure the system clock */
    ' `6 g, A) y3 p; O
  21.     SystemClock_Config();9 r8 j* c2 c2 ]' j5 ]
  22. ) v) \) j, s" j& W" W" w$ h, V
  23.     /* USER CODE BEGIN SysInit */
    4 D1 W8 D( ~; S. Y
  24. * Q- ?* k5 i$ Z. ?0 h# t
  25.     /* USER CODE END SysInit */
    9 [  v8 o/ y" M+ L: f. u6 w7 k7 W

  26. " M7 c8 z& }/ D6 l- n3 y% U' T; C: Q
  27.     /* Initialize all configured peripherals */
      i9 [9 F& M, w  e
  28.     MX_GPIO_Init();
    , Z& P9 o5 _+ F2 d" [$ _" P
  29.     MX_TIM1_Init();/ x+ t# q2 O; W7 y$ b
  30.     /* USER CODE BEGIN 2 */% U/ \& T/ ], q" Y/ F) g
  31.     HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);   //1000HZ 50%占空比的PWM
    / d8 m: S* G5 Q6 j
  32.     HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);   //1000HZ 20%占空比的PWM
    ; p' ~: i. b" G6 ]; _6 a9 H
  33.     /* USER CODE END 2 */3 o2 }+ z: u2 G6 z/ A
  34. 1 W! q8 p4 b% b3 V# e& K
  35.     /* Infinite loop */0 x5 a- o/ B3 P6 o0 e& }* M
  36.     /* USER CODE BEGIN WHILE */1 W. m5 ?, ~" q2 W) c
  37.     while(1)
    0 Q* b: d" W4 V, C" d
  38.     {& ]- Z: O8 e* O8 M+ r' g4 [" [
  39.         /* USER CODE END WHILE */
    1 N  ]7 b% \- C* ]( Y: C
  40. * p9 w# I! h7 e( w1 K
  41.         /* USER CODE BEGIN 3 */
    5 @+ Z2 u6 T# d" T
  42.     }: h& e8 d4 w9 p/ e7 e
  43.     /* USER CODE END 3 *// @  R3 Q5 |1 ^1 G: [2 J& L* z! \
  44. }
复制代码

  P* Z5 q7 U9 u# _  O可以使用一下函数修改PWM的占空比5 D7 m. |, U% j  ~. n

! \; u' `( z1 ~2 Y4 ~
  1. // 使用此宏定义修改占空比
    ; Q! Q% i: O, ?- v) w2 E
  2. __HAL_TIM_SetCompare(__HANDLE__, __CHANNEL__, __COMPARE__)
复制代码
例如:( _7 L8 M4 F6 g( }' b4 V6 l' n

6 c: h6 c* ?) b% @. a. q0 z2 i
  1. // 将定时器1的通道1 翻转计数修改为 800,在我们的例程上正好就是800/1000 即 80% 的占空比+ q! p, @( I( v+ x1 [
  2. __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1,800);
复制代码

! R( A" U/ W) r  O5 }3. 实验现象+ `" O" _; r4 h9 N
编译并将工程下载到开发板后,使用示波器或者逻辑分析器查看 PA8 和 PB3 引脚是否输出 1000HZ 且占空比分别为 50% 和 20% 的方波。
$ h! C( Q0 X! o" X5 I0 _/ a9 `0 A. ~7 y, b4 Y
, C" E; O2 e+ L. e* p) t* L( @2 k  E4 k+ K% R
7 Z, M. i; y5 [9 ~1 K
收藏 评论0 发布时间:2021-11-11 22:00

举报

0个回答

所属标签

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