|
stm32h7xx_hal_conf.h 中需要注意的几个地方:
. E' c6 `+ I; |4 x ~: e* y- /* 0 J- p% N. q K
- *********************************************************************************************************
! t3 D) z) T+ y+ r - * 函 数 名: assert_failed
% f& |: [5 O$ l3 E3 r - * 形 参:file : 源代码文件名称。关键字__FILE__表示源代码文件名。 5 K+ @( @+ a0 ?' u0 F4 `- v* E1 G2 A
- * line :代码行号。关键字 __LINE__ 表示源代码行号
5 ]5 J8 b7 `! @& ?4 Y9 O - * 返 回 值: 无 6 Q4 {) C8 M2 D5 w
- ********************************************************************************************************* 3 A( q. l# U% ~, Z/ ?
- */
, z* @4 z J4 k - void assert_failed(uint8_t* file, uint32_t line) ) k" [, ]# a" ^0 a! H4 C$ V8 V
- {
% t9 l/ W, z5 R) w) M* U - /*
W2 B: c D2 b& T - 用户可以添加自己的代码报告源代码文件名和代码行号,比如将错误文件和行号打印到串口
% t7 h8 m5 b+ _' t5 G3 C: e7 @# K - printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
0 h, f+ b" f2 m& S - */
( r5 O* z' D% y# b0 M" N) _3 n -
5 P% i: p1 Q, V" K3 _$ E0 _ - /* 这是一个死循环,断言失败时程序会在此处死机,以便于用户查错 */ 0 Y- j) [% \( @$ G) t- y1 _6 U5 ^# Y/ I
- while (1)
0 Q0 A& d, L, a& {& V+ d/ K - { / ?9 b- h' N! D6 X
- }
! n8 Y7 P. b1 z - }
复制代码 2 t6 `! L! A% v0 u) I* `/ `
HAL 库不像之前的标准库,在系统启动函数 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 更新系统滴答时钟。 : O1 F+ H" e' K3 k$ W0 V7 E3 j
' G( [1 t8 F& W" L5 J2 D |