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

STM32CubeMX+Hal库教程-点亮Led

[复制链接]
STMCU-管管 发布时间:2020-10-19 12:36
简单写一下失败经历。6 p  ~: y3 F5 G7 F
    用的CubeMX版本是4.20.0如下图,用的Keil5编译代码,编译结果0 Error(s),0 Warning(s)。
& y- F/ X, h9 z! x4 I8 s1 i
6.png
; u/ D4 @1 E  F- ~
    Hex文件也可以正常下载到单片机,但是LED不亮。2 l+ y4 s( A% ?, [; ~% B
+ X% R, K5 K; H' h5 Q' K( P

  F: Y  p0 l& {    在CubeMX中配置了时钟,如下图。
  g% _. A2 E, D+ m* g3 Y# P
7.png , b5 e0 j/ X8 z5 C3 L
    CubeMX生成的main.c中Clock代码是这样的:
7 U! t/ G9 K; `) [% r
  1. ) v% S; z& T! J) ~
  2. /** System Clock Configuration' U* k4 {  E, k' A" _
  3. */, [& f5 E0 {7 {# Y% N
  4. void SystemClock_Config(void)! x7 f7 X$ Y9 `% O
  5. {3 k  s' u" f, ?+ m: ?# ^0 B: u9 t  p

  6. # k' a0 R5 D' \1 W9 u" w
  7.   RCC_OscInitTypeDef RCC_OscInitStruct;# @9 h9 ^/ W& S: h4 j8 ^9 J0 s
  8.   RCC_ClkInitTypeDef RCC_ClkInitStruct;/ P+ Y" u7 i6 w
  9. ' y7 d" P) \; T/ x
  10.     /**Initializes the CPU, AHB and APB busses clocks
    * {+ p. T4 d& |0 @
  11.     */
    : [1 T# G/ u# O! y
  12.   /*3 N6 u! ]& ~4 U/ }6 U1 O" D' O8 f% l
  13.   其中,OscillatorType这里自动生成的代码有问题
    / Q0 o& E: C  z  c1 a4 K  ]2 o
  14. */
    & w5 i: S* e6 V0 V$ ~; N
  15.   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSE;
    6 b) h4 c2 R; H
  16.   RCC_OscInitStruct.HSEState = RCC_HSE_ON;1 n0 t7 y) _, s' a4 b! i% p8 @
  17.   RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;0 k- X1 A. F* k5 |
  18.   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
    5 Z2 W! j0 @  S0 V( G
  19.   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;# ]" E/ ~2 X: o$ x% w
  20.   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;) [0 U* N$ L! h* j$ U$ O* @
  21.   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)4 C% ^* n! {4 V0 u$ l/ X* ^
  22.   {
    : X9 {2 e4 S0 M* F
  23.     Error_Handler();6 o) e1 o+ l# F2 y
  24.   }
    # d+ e2 F  T8 Q6 e
  25. * s9 ^) f8 o8 }+ g
  26.     /**Initializes the CPU, AHB and APB busses clocks : b0 m! ?+ e/ o  z5 t
  27.     */. M: O- o6 r( r3 w1 u
  28.   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
    4 y; A+ t3 l# E, l+ J, s/ ?
  29.                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;% M/ f7 a) U6 Q% H
  30.   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;) a( D1 [# d: i! j7 I$ f
  31.   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
    ; p' O2 n: s& ?* V0 H" v
  32.   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;6 A/ r6 W; N+ M, d, C4 D4 P
  33.   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;1 R1 y% y# c7 x  I, ?+ v6 V$ s+ |3 v
  34. ( A% g7 ~$ q* s* T' F* Y7 ^" s
  35.   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)% A( d% B+ h! z- k
  36.   {
    1 H& N7 h0 V' X; A2 ~4 s& y
  37.     Error_Handler();5 ?1 ]+ b- E5 M- D( ~
  38.   }, A0 P' `6 _) C3 p! i) O# W
  39. 6 b2 k1 @: G% c' B: R
  40.     /**Configure the Systick interrupt time ; z% B" U) q9 p& x9 ^' Z8 f( Y  `
  41.     */) @6 J( p& H. t8 v
  42.   HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);8 K) i& B0 z4 L- [( d0 n' A

  43. : R1 {+ [" H6 ~) b3 r* E% z
  44.     /**Configure the Systick
    5 a! B/ a: R0 c2 W0 O
  45.     */
    # h6 Y( t/ ?; G8 O* U) y
  46.   HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
    ( K+ ]: k5 d$ {: C& Q$ e2 N5 u" K
  47. & y5 n" [% A# L* o& I( }* S! m# i
  48.   /* SysTick_IRQn interrupt configuration */% a8 u8 F3 O+ P$ F
  49.   HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
    ; U  U4 T+ G4 c8 C8 T( {
  50. }
复制代码
4 Z( _, [. s  O6 q
# V! B: {2 T1 A% L3 t
问题在哪儿呢?LED挂在PC0上,时钟路线图如下。
+ D5 A. a( E1 s+ M2 a
8.png
/ m4 i7 n8 i/ v* a2 T* X. G
第14行代码写成下面这样验证OK。5 b8 T, k: U/ G0 Z" D8 J' g7 F7 i8 n

  1. ) Y- U0 x- w: R( y( C
  2. <font size="3">RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;</font>
复制代码

" e% K, O/ I" A% l& j
4 U! ~/ \+ Z$ w4 Q/ Y! s 实际上在实验中没有用到HSI,但是在自动生成的代码中把它加上了,导致单片机无法正常工作。看来排查Bug时,时钟这一块需要重点关注一下。1 ~& _) }3 }0 W1 s$ D" z# S1 M

1 ?2 i' G# A; \3 Q9 e0 B  P7 R" K6 L5 e
8 r/ w9 s6 x/ D/ g

2 i! d7 e( R2 q- J7 r
收藏 1 评论0 发布时间:2020-10-19 12:36

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版