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

【经验分享】STM32F0 Timer1 作为PWM设置

[复制链接]
STMCU小助手 发布时间:2021-11-24 15:00
设置PA7 作为 PWM输出* t# r. x! P& r) D
  1. void TIM_IO_Config(void)0 `; f/ H3 x" Z, S% J/ }3 Z$ t( i1 `
  2. {6 W. K- e' R3 V+ u% b  Z
  3. GPIO_InitTypeDef GPIO_InitStructure;
    , @* E9 \, x3 q& j% o3 r7 [
  4. % A: ?" n+ z6 {! p8 u+ g" z
  5. RCC_AHBPeriphClockCmd( RCC_AHBPeriph_GPIOA, ENABLE);' ~1 A9 t4 [7 p3 d  d7 N2 X+ w6 _

  6. % h* h  D# Z; g
  7. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;//3 T0 u  W0 u7 B0 g" M3 B0 m$ D
  8. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
    % j6 Y7 O* a$ ]  i. w2 ]' J
  9. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    & ^8 r* Y6 w9 `
  10. GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;8 h( P; v0 P  ^, O# ~9 P" K" v
  11. GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ;
    - B$ j6 O) v; w
  12. GPIO_Init(GPIOA, &GPIO_InitStructure);
    % a8 ]5 |1 W1 g
  13. GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_2);5 N% C4 [; D! R- R
  14. }
    1 L& `! o* t: R9 _8 w' {
  15. 设置Timer1 为PWM模式,使能,使能PWM输出8 e; M4 U5 A3 B& O, P) _
  16. void TIM_PWM_Config(void)! t3 j  D0 Y. ]( ^6 S
  17. {: z. t0 o* d$ o6 C0 K
  18. /¼ÆËãÔ¤¶¨±íµÄÖµ£¬Ò²¾ÍÊǶàÉÙ¸öʱÖÓ¼ÆÊýΪһ¸öÖÜÆÚ/% U3 Q: w" x& g# j0 p3 g
  19. TimerPeriod = (SystemCoreClock / 17570 ) - 1;
    # j, c  K- r' B5 ~
  20. /¼ÆËãCCR1 Ìø×ªÖµ ÔÚÕ¼¿Õ±ÈΪ50%ʱ/$ d  w* y- A5 X6 [4 ^( B1 }8 Y
  21. Channel1Pulse = (uint16_t) (((uint32_t) 5 * (TimerPeriod - 1)) / 10);5 p( k% w' Z2 w+ }1 K" Q
  22. /* TIM1 ʱÖÓʹÄÜ /
    7 s% e% h/ d, X0 E9 Q' G$ n
  23. RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1 , ENABLE);# K( Y( a, a7 O* C
  24. / Time ¶¨Ê±»ù´¡ÉèÖÃ*/5 }. W" V7 A! I
  25. TIM_TimeBaseStructure.TIM_Prescaler = 0;
    ' d& o; x  q& v: ~
  26. TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; /* Time ¶¨Ê±ÉèÖÃΪÉÏÉýÑØ¼ÆËãģʽ*/% m# X1 ~! Z0 W3 D
  27. TIM_TimeBaseStructure.TIM_Period = TimerPeriod;
    1 W, P& U  }0 w5 x8 m: K! u
  28. TIM_TimeBaseStructure.TIM_ClockDivision = 0;
    7 ?2 X5 T) l$ ~8 e* ~& O
  29. TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;& e) K% W2 Q. e% \# s
  30. . H3 [8 `( F. x0 z6 p1 ?
  31. TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
    1 x4 h: m7 M8 Q% Y
  32. /* ƵµÀ1£¬2£¬3£¬4µÄPWM ģʽÉèÖà */* P3 d! q+ N6 [5 X  B1 [
  33. TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
    2 v, r' D; ~& q0 @3 P2 H; i
  34. TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    ; O" J: @7 f/ L) Z) f4 M' F+ l
  35. TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;3 }. m/ I  O; p4 W8 q# p
  36. TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;3 _0 t' f% h0 m# s& b2 r/ L
  37. TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
    % {2 A" Y* M3 r6 H( z5 r  z2 `
  38. TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
    $ g* L( [2 l4 Y- ~  ?
  39. TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset;, I+ ]  C' w3 o* [
  40. / w, F& F3 ]" ?- R* h8 y1 w! ^* O- M3 M
  41. TIM_OCInitStructure.TIM_Pulse = Channel1Pulse;//ʹÄÜÆµµÀ1ÅäÖÃ
    1 Q  }2 O( q3 E- i7 k% H
  42. TIM_OC1Init(TIM1, &TIM_OCInitStructure);7 C0 z# S/ O, W
  43. $ b! T' E7 ?" g& _5 r; I' d1 k
  44. /* TIM1 ¼ÆËãÆ÷ʹÄÜ*/
    * V5 n' W) L, a  `8 v( F  n# ?  n
  45. TIM_Cmd(TIM1, ENABLE);" B( X9 M" S" D0 A) l- w1 x  q/ x, ^# M
  46. ; F$ b6 M( t( Q3 Y3 y! H
  47. /* TIM1 Ö÷Êä³öʹÄÜ */3 R4 t$ P5 l, |: S5 S* A0 w
  48. TIM_CtrlPWMOutputs(TIM1, ENABLE);
    ! y5 Q. f2 F; `
  49. }
复制代码
! v7 G+ ^0 v0 N3 i3 f

& e6 \: j4 H: E! x6 y' X$ G5 r/ K/ l. r4 B' L5 z5 y: U2 j4 t% Z1 `
收藏 评论0 发布时间:2021-11-24 15:00

举报

0个回答

所属标签

相似技术帖

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