stm32h7xx_hal_conf.h 中需要注意的几个地方: $ P1 _$ K+ P8 W7 z
- /* K0 W4 K9 j' P% Z I
- *********************************************************************************************************
[) K- c8 X( h. q* P - * 函 数 名: assert_failed
8 E8 K; M. e2 o; u! S$ w# P8 g - * 形 参:file : 源代码文件名称。关键字__FILE__表示源代码文件名。 ; m9 G$ _2 `: Y0 n8 g; B
- * line :代码行号。关键字 __LINE__ 表示源代码行号 # V5 T) x9 P3 k Q! Z
- * 返 回 值: 无
6 s% T9 x9 o0 t) ?- X O - ********************************************************************************************************* 0 g& k+ U2 ^, T
- */
2 ?4 A% f2 I$ V0 T - void assert_failed(uint8_t* file, uint32_t line) 2 u5 f1 \+ ~: U6 n' A3 O
- { 1 N3 k$ b& j$ Q9 J2 H, D- s4 M
- /* 7 `, n! L6 p9 T
- 用户可以添加自己的代码报告源代码文件名和代码行号,比如将错误文件和行号打印到串口 1 o0 e- A3 _0 E" n
- printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ 9 `0 ?" @7 p7 Q
- */ 7 V0 v7 T6 g/ N; s; i8 Q
-
' l& p8 C2 F0 z( k o - /* 这是一个死循环,断言失败时程序会在此处死机,以便于用户查错 */
1 O. `; Q+ f- ~3 l5 [ - while (1)
7 x. S$ h) f5 W/ S. p - {
7 ^' x$ `* Q5 @. c; }' h! b - } * w! W. Q/ M$ g! } x0 s
- }
复制代码
: ^% _4 ^; U* t$ j% o$ R9 OHAL 库不像之前的标准库,在系统启动函数 SystemInit 里面做了 RCC 初始化,HAL 库是没有做的,所以进入到 main 函数后,系统还在用内部高速时钟 HSI,对于 H7 来说,HSI 主频是 64MHz。 HAL_MspInit 和 HAL_MspDeInit 在 stm32h7xx_hal_msp.c 里面做具体实现。 PA0_C 这类的引脚只有在 TFBGA240+25 ballout 这种封装上面才有。 LSE Bypass 和 LSE On 之间的切换,必须要先关闭 LSE 才行。同样 HSE Bypass 和 HSE On 之间的切换,也必须先关闭 HSE 才行。 HAL_RCC_OscConfig 会更新全局变量 SystemCoreClock 的主频值,并且会再次调用函数 HAL_InitTick 更新系统滴答时钟。 0 [4 M5 J1 U1 X! b
; j$ I( q- |# k n
|