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

STM32CubeMX+Hal库教程-点亮Led

[复制链接]
STMCU-管管 发布时间:2020-10-19 12:36
简单写一下失败经历。
. h# ^2 }* Z4 y3 I8 o    用的CubeMX版本是4.20.0如下图,用的Keil5编译代码,编译结果0 Error(s),0 Warning(s)。
8 C+ g5 O6 Q2 |
6.png
3 p$ f5 F% t$ |; m% c( U
    Hex文件也可以正常下载到单片机,但是LED不亮。
, f$ }) |$ Z) K2 d5 s
& y0 \  @9 D# M9 k$ Z/ I1 W
, [2 H( u1 b$ i6 M' u% ~8 @
    在CubeMX中配置了时钟,如下图。. r9 g% t7 [% g; w# q. V# X
7.png
  u4 s( k. c- h- t( ^
    CubeMX生成的main.c中Clock代码是这样的:  M. R1 Z# _% i' a# ]5 ~; ?
  1. 7 W7 j. ~$ m, |& ]2 d! ^/ b6 X; v
  2. /** System Clock Configuration
    # R0 }5 u3 i2 i5 s
  3. */  B9 v  f3 j* \8 {% ?5 a* s
  4. void SystemClock_Config(void)3 t. y9 \: ~$ ]; s" t* r' E7 w  h) M. G
  5. {& P. ~3 @& L0 P6 h) Y. h
  6. + b- i, X1 b6 |1 V* ^" w/ F. C
  7.   RCC_OscInitTypeDef RCC_OscInitStruct;) B5 _, A& J' w6 D- @; S' s
  8.   RCC_ClkInitTypeDef RCC_ClkInitStruct;
    $ o, `% ^% }' E/ U' J! m$ x& B' X) y

  9.   q# D! w( W3 |# h6 d6 s% N! {
  10.     /**Initializes the CPU, AHB and APB busses clocks ( e: [+ q% J( c6 ~1 @9 k3 P/ I
  11.     */
    # T8 ^5 Y6 O9 H3 s7 W; q0 `
  12.   /*
    * f9 ~' [/ n5 H- U' S; U
  13.   其中,OscillatorType这里自动生成的代码有问题# I* K$ a$ J- P1 r; x' _
  14. */
      |+ F' g: k* B- r
  15.   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSE;
    / ]! [0 i# x) O+ b5 a
  16.   RCC_OscInitStruct.HSEState = RCC_HSE_ON;0 P: N8 k" s/ }7 ]  Z
  17.   RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;4 X& x6 f  v# r5 w- V
  18.   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;* c* U- O7 Q, v) g$ a
  19.   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;* R; @+ x( G( R7 D4 ~8 B
  20.   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
    2 e2 i3 b+ Z/ A  v- Y" y
  21.   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
    ( E% q6 G+ g2 r" T- v
  22.   {, e7 i! e8 ~  j0 f) E
  23.     Error_Handler();! e' ?$ Y& l- j9 J0 U, z
  24.   }: V/ ]( I' Y+ q7 a- g7 ?
  25. 3 C8 \2 C! A( r% l
  26.     /**Initializes the CPU, AHB and APB busses clocks ! j( I! L$ F6 x5 c% j  W
  27.     */" V; \' R. S4 ?# }$ K! g0 X# W  N
  28.   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
    + x& Y, t5 u# N$ V) [; X
  29.                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;. {2 G% \. L6 D* H8 N* ~3 n) O
  30.   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
      |9 O9 P' N5 U* O
  31.   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
    ; L2 a1 k0 d% \
  32.   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;% ^. w0 A4 _* e; o
  33.   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
    3 K5 |8 e; ~8 V4 T8 R

  34. 0 W" b9 }% S3 [, V% y2 B; Q
  35.   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
    5 t* `; a" U$ e! P! @
  36.   {$ q3 F- e& @7 ~. T# _
  37.     Error_Handler();! k- X: J1 R' w! N
  38.   }  [* w' A2 E/ }. K, \
  39. 4 C1 [! d  J4 [
  40.     /**Configure the Systick interrupt time
    & r% `! q3 \& A2 N5 R7 R
  41.     */
    ' n6 G. o2 X! Y8 m+ D# o% z
  42.   HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
    7 u5 z3 G; p, [6 F
  43. 1 Q3 u( x) \  g8 a5 _! x/ c# j
  44.     /**Configure the Systick
    4 M2 R. g: p7 g: P
  45.     */
    & B# y' Q. O  v# z4 s
  46.   HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);7 x' f& R: Z. E7 N( y

  47. . D: r/ e8 h) h6 d) ?! v
  48.   /* SysTick_IRQn interrupt configuration */3 T* m) N" D. N" j& g: \2 ]! v% Y
  49.   HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);4 i4 Z% A, v4 {0 K
  50. }
复制代码
5 L6 p6 X6 F7 e4 A& J8 L2 @' G

: h; a* P' g% X问题在哪儿呢?LED挂在PC0上,时钟路线图如下。
3 r# ?. E1 _3 @8 C2 b% c# n
8.png * R9 f3 @. \8 c, ]" ?
第14行代码写成下面这样验证OK。8 C7 {/ a9 y" R+ s: j

  1. ! `# M5 l, p+ ?0 M5 w/ [/ c; n
  2. <font size="3">RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;</font>
复制代码

) ^7 G* @6 N: I" f8 i& ^" s5 U7 M( q; I. L! M4 s
实际上在实验中没有用到HSI,但是在自动生成的代码中把它加上了,导致单片机无法正常工作。看来排查Bug时,时钟这一块需要重点关注一下。5 |" b! |$ `$ S3 y0 r

# c8 E' \; u+ R+ ?. m7 t! K
, z. b% N' b8 i0 C% z  i. D" j

1 S, E- n. E6 X0 j- c% K$ B/ {  U8 z% x
收藏 1 评论0 发布时间:2020-10-19 12:36

举报

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