.\Objects\Usart.axf: Error: L6218E: Undefined symbol HAL_NVIC_SetPriority (referred from stm32f4xx_hal.o)

.\Objects\Usart.axf: Error: L6218E: Undefined symbol HAL_NVIC_SetPriority (referred from stm32f4xx_hal.o)

我正在使用 uart 并从 keil/PACKS/Drivers/HALdrivers 文件夹手动添加 uart 文件,但编译后我遇到以下错误。

此错误信息:

Undefined symbol HAL_NVIC_SetPriority (referred from stm32f4xx_hal.o)

告诉您文件 stm32F4xx_hal.c 中的某些代码使用了符号 HAL_NVIC_SetPriorty 但符号 HAL_NVIC_SetPriority 未定义。它是未定义的,因为您还没有将定义它的源文件添加到您的项目中。如果你搜索所有的STM32F4 HAL驱动程序源代码,你会发现HAL_NVIC_SetPriority是在stm32f4xx_hal_cortex.c中定义的一个函数。您需要将文件 stm32f4xx_hal_cortex.c 添加到您的项目中以提供 HAL_NVIC_SetPriority.

的定义

添加 stm32f4xx_hal_cortex.c 应该至少可以解决您的一个错误。但如果 stm32f4xx_hal_cortex.c 使用新的未定义符号,它可能会产生新的错误。您将不得不重复此过程。

  1. 在HAL Driver源代码中搜索未定义的符号以查找 定义的地方。
  2. 然后将包含定义的源文件添加到您的项目中。
  3. 对下一个未定义的符号重复。