这是因为没有没有把所用到模块对应的文件添加到keil中去
博主用到的是stm32f103zet6
解决方法:
1.添加相应的头文件
按照这条路打开main.c->main.h->stm32f1xx_hal.h->stm32f1xx_hal_conf.h,stm32f1xx_hal_conf.h这个文件作用是控制这个工程包含那些头文件(用条件编译的方法),默认很多模块的define都是被注释掉的,如果要用到哪个模块就把对应的define删掉(#define HAL_CAN_MODULE_ENABLED和#define HAL_CAN_LEGACY_MODULE_ENABLED这两个好像会有冲突)
2.添加相应的源文件
打开分组(图标是红绿白三个正方形摞在一起),选中Drivers/STM32F1xx_HAL_Driver,可以看到右边只出现了HAL库源文件的一部分,点击Add Files,把HAL库中用到模块对应的.c文件添加进去