stm32h7xx_hal_conf.h 中需要注意的几个地方:

  1. HSE_VALUE 这个外接晶振的频率

  2. TICK_INT_PRIORITY 这个 tick 的中断优先级,因为 HAL_DELAY 这个函数是基于这个 tick 的中断的,所以如果有其他高优先级的中断中调用了 HAL_DELAY 函数,会造成 tick 的中断一直进不来。这样的话 HAL_DELAY 也会一直卡住,这个高优先级的中断也会一直卡在这里。

  3. 断言的参考实现函数。

    /* 
    ********************************************************************************************************* 
    *  函 数 名: assert_failed 
    *  形    参:file : 源代码文件名称。关键字__FILE__表示源代码文件名。 
    *        line :代码行号。关键字 __LINE__ 表示源代码行号 
    *  返 回 值: 无 
    ********************************************************************************************************* 
    */ 
    void assert_failed(uint8_t* file, uint32_t line) 
    {  
    /*  
    用户可以添加自己的代码报告源代码文件名和代码行号,比如将错误文件和行号打印到串口 
    printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ 
    */ 
    
    /* 这是一个死循环,断言失败时程序会在此处死机,以便于用户查错 */ 
    while (1) 
    { 
    } 
    } 
  4. HAL 库不像之前的标准库,在系统启动函数 SystemInit 里面做了 RCC 初始化,HAL 库是没有做的,所以进入到 main 函数后,系统还在用内部高速时钟 HSI,对于 H7 来说,HSI 主频是 64MHz。

  5. HAL_MspInit 和 HAL_MspDeInit 在 stm32h7xx_hal_msp.c 里面做具体实现。

  6. PA0_C 这类的引脚只有在 TFBGA240+25 ballout 这种封装上面才有。

  7. LSE Bypass 和 LSE On 之间的切换,必须要先关闭 LSE 才行。同样 HSE Bypass 和 HSE On 之间的切换,也必须先关闭 HSE 才行。

  8. HAL_RCC_OscConfig 会更新全局变量 SystemCoreClock 的主频值,并且会再次调用函数 HAL_InitTick 更新系统滴答时钟。

标签: STM32

添加新评论