|
stm32h7xx_hal_conf.h 中需要注意的几个地方:
2 @0 C- \2 J3 }" i- /* 8 j' ]( C4 i/ z4 {5 l$ h
- *********************************************************************************************************
5 W/ ^; C* q4 \ - * 函 数 名: assert_failed ( t. j! u; B: p8 `. H7 c8 l0 w
- * 形 参:file : 源代码文件名称。关键字__FILE__表示源代码文件名。 6 O+ F+ [) i8 c; d* x: ?; r) s- f3 x
- * line :代码行号。关键字 __LINE__ 表示源代码行号 $ U4 p5 M. a7 h: P
- * 返 回 值: 无 6 f$ a. Y* g) W: w) W0 T4 K B
- ********************************************************************************************************* / }. Q) }- y! r( l; R
- */
, G" Q, l* K* c$ S. S4 ]: W; Z - void assert_failed(uint8_t* file, uint32_t line)
+ f2 ~) k3 O0 {6 o9 ~ - { 5 C! |, V& c Q! W Y, v6 |$ ?
- /*
; Z3 }5 M! w1 u* g: Q - 用户可以添加自己的代码报告源代码文件名和代码行号,比如将错误文件和行号打印到串口 9 e8 r, {. ]% ?, ]. b
- printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ 3 [7 d0 ~5 I0 U) G+ n5 ~, B4 y. Y4 r
- */
- I* m3 |: I! s" ?1 C& Z' ]1 { -
4 T, }( y, w! B" E - /* 这是一个死循环,断言失败时程序会在此处死机,以便于用户查错 */
4 H9 i0 K* z% @% u. Q6 _& s0 T - while (1) % g" F) r1 W, d% s: F1 r
- {
+ s% L: P) Y# s! h, {2 h6 r5 P - }
2 u7 b/ E( `' c. H) w: S# z/ Y! b - }
复制代码
) L5 g( [, P" NHAL 库不像之前的标准库,在系统启动函数 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 更新系统滴答时钟。 7 e" j( M% d& b3 u4 {
4 A% z; W1 d3 ~* n& F |