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

STM32CubeMX+Hal库教程-点亮Led

[复制链接]
STMCU-管管 发布时间:2020-10-19 12:36
简单写一下失败经历。3 X4 k7 G; l. _, _
    用的CubeMX版本是4.20.0如下图,用的Keil5编译代码,编译结果0 Error(s),0 Warning(s)。
2 S/ M0 M  R' f- ^  N, ]1 a
6.png ( A/ B2 r0 S: {/ q) ?& B0 M
    Hex文件也可以正常下载到单片机,但是LED不亮。) P# F* C& t- u1 [. |

5 Q: T$ j* t! V4 u" K$ e5 |# t

4 F! h$ ]& C* T8 k  M. P; |1 U    在CubeMX中配置了时钟,如下图。
3 r/ b5 Y( a5 |- [
7.png
1 v+ b' g$ W1 a- n  A; H- D
    CubeMX生成的main.c中Clock代码是这样的:
: P  j  Q3 @+ {; d
  1. 2 Z- q4 F0 x0 X% Z# O# K; o, e
  2. /** System Clock Configuration5 G4 I6 m2 n- d& E6 ~
  3. */
    . E  x- D- C7 k( D( T& H. Y# Y
  4. void SystemClock_Config(void)6 S3 h7 H* |0 k# m; X: X
  5. {
    " `' }* s: h4 I! {

  6. ; D. R/ W9 u% L$ q/ `7 Y. \  _8 u
  7.   RCC_OscInitTypeDef RCC_OscInitStruct;* i3 ?) d% {, f; O% [2 H% j' i
  8.   RCC_ClkInitTypeDef RCC_ClkInitStruct;6 @" E- F2 ^8 n7 a5 r& v
  9. 5 k; ]  v6 Q4 p; G6 W& @5 @
  10.     /**Initializes the CPU, AHB and APB busses clocks
    1 }0 X4 J# \% h# u( J$ b
  11.     */9 @9 H# C8 ^* K
  12.   /*
    8 Y) Q+ e) K2 T1 P
  13.   其中,OscillatorType这里自动生成的代码有问题
    4 D5 O: m6 R/ y( n5 y7 M
  14. */) v" N7 v1 C2 x/ m$ T: H
  15.   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSE;
    / g6 ^3 u8 `4 _! g
  16.   RCC_OscInitStruct.HSEState = RCC_HSE_ON;7 K, G, j8 e" i- _# u: O
  17.   RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;; r( T9 K3 U7 n# a: z. P: e
  18.   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;, S  }# q+ y6 R' h( [+ l4 v9 t8 i
  19.   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;) |! A3 |9 B2 y) n, g
  20.   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
    $ e8 \& ?  |. s: Y+ `
  21.   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)4 A# L2 q1 a4 H: v
  22.   {1 r+ |) C4 |, z- T2 w
  23.     Error_Handler();
    ! H1 i, l7 g0 @1 `7 }* J
  24.   }
    2 Q0 A* f3 o5 C: s6 q
  25. ! y, M" _  i/ ~
  26.     /**Initializes the CPU, AHB and APB busses clocks
    0 B( y! T0 U" A% ^# }6 ?
  27.     */
    7 n: \3 H9 D# e  ^4 Q/ L0 T6 [
  28.   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
    9 j: `" @/ B% {( O6 U6 h, K* O2 b
  29.                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;4 x0 r5 ~# I# @& y( P
  30.   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;+ e' P: T* _% T8 v4 ~: o/ _
  31.   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;" l5 o* Z  j2 s+ v( W
  32.   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
    9 n6 z4 |2 S9 V/ ^, {6 f* }$ J
  33.   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;& s; Z7 h5 b* i; B  w: Q
  34. ) e7 n. S! I8 i  p3 ?4 y
  35.   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
    . z( `- a  a0 K
  36.   {
    5 p' e, B, l6 g
  37.     Error_Handler();
    / h& j- P7 u/ ^+ u3 ~6 d! O
  38.   }" j6 b4 X1 t! e0 T' @& r4 I2 Q

  39. 4 n0 b5 {5 }8 G0 ~1 S8 ]7 c* @
  40.     /**Configure the Systick interrupt time " U1 D& S& B7 u5 [
  41.     */- N" D- N; g7 Q
  42.   HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);* E( P7 c  q: x$ }' z  `. j  b5 o) g; n2 F6 \

  43. ) Q5 O7 E( K( }5 n$ v1 a; }
  44.     /**Configure the Systick
    - s1 g3 K+ B- i% K
  45.     */
    6 v  y8 g  u7 x# A% ]4 n' {9 Q
  46.   HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);0 ^( m6 F: H6 u1 {" e

  47. 2 K5 {7 |' r& {' l  Z
  48.   /* SysTick_IRQn interrupt configuration */
    ) _- Q5 {6 Y) m& |4 g' P5 _$ z
  49.   HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);3 `) I1 q- r1 `9 f4 q# Y4 ?4 a
  50. }
复制代码
  D+ L0 {  ~. h2 F- `
5 B- E* S8 T3 @# c( c
问题在哪儿呢?LED挂在PC0上,时钟路线图如下。
/ D1 [+ T3 ]1 v5 @* }+ h) y
8.png
* T- M! f6 g) Y" u
第14行代码写成下面这样验证OK。# T  }, V( ^, v0 [% p

  1. * f5 s+ X) g/ x$ l
  2. <font size="3">RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;</font>
复制代码

8 x* B$ @( S/ t( H% G4 q- o0 N: P& P9 z( e4 d
实际上在实验中没有用到HSI,但是在自动生成的代码中把它加上了,导致单片机无法正常工作。看来排查Bug时,时钟这一块需要重点关注一下。
+ r+ b! T4 v" x* e# }( d( n5 l% C
4 Y0 R/ U/ x, W" J0 k
" Z2 B. V# ]5 n& p( w" D

( c( a$ @/ L1 S$ c& ]8 q
/ i( A1 z$ F% B
赞 收藏 1 评论0 发布时间:2020-10-19 12:36

举报

0个回答

所属标签

相似技术帖

官网相关资源

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