stm32f767 HAL 工程模板
官方建议使用 HAL库方式!!!
HAL库的移植,同标准库的移植相差不多。
本次以STM32F767使用HAL库进行移植,建立工程模板。
其它开发板,类似的选择要拷贝需要的文件,只是名字不同本质的东西大致一样。
要会变通,及文件名的意思,代表着他们的作用,要思考。
HAL的下载,使用Cube MX软件自带下载的即可,默认保存路径:
注意修改用户名为自己用户名!
C:UsersAdministratorSTM32CubeRepositorySTM32Cube_FW_F7_V1.16.1
在Keil中创建五个文件夹,为了学习和分析的方便性,文件夹的目录级数,均为一层,没有多层管理。
看我的思维导航图就知道。
其实生产环境中,可以将,STM32F7xx_HAL_Drive、STARTUP、CMSISCORE、CMSISST,这四个文件夹其实可以放一个文件夹:HAL
最终拷贝好的,工程模板的源码目录结构:
Keil中添加组文件夹:
注意:
为了学习和分析,添加组文件时,头文件,源文件,都一并添加进来了。
HAL_Driver可先只先添加需要文件,避免编译时间过长。
编译配置
晶振25,使用微库,双浮点启用,这里暂时没有使用,只是先开启【后续一定是要整的】。
生成HEX
Keil中添加头文件,和 预编译的宏定义: USE_HAL_DRIVER,STM32F767xx
注意: 预编译的宏定义,其实也是可以在代码中实现的。【CMSISST文件夹中的stm32f7xx.h内】
正常编译,报错列表:
报错:FCARM - Output Name not specified, please check 'Options for Target - Utilities'
分析:从网上搜索和自己找问题,大都是因为在添加组时,进行添加文件时,引入了非头文件,源文件,汇编文件,IDE不能适别导致。
解决方法,将组文件夹都删除,重新再添加一遍,再次编译。
组文件夹 有人不理解,其实就是点击那个“品字形”的图标,组织文件夹的配置,删除重新添加。
报错:..USERIncmain.h(26): error: #5: cannot open source input file "stm32f7xx_nucleo_144.h": No such file or directory
分析:明显是引入的文件不存在,双击报错行,会跳转到报原因行。
注解//#include "stm32f7xx_nucleo_144.h",再编译。
报错:Overlapping of Algorithms at Address 08000000H
分析:重叠 of 算法 at 地址
解决:只留STM32F7x 1MB Flash 1M 那一行即可。
再编译运行,一般不会有什么报错。
【如若有参考我的方法进行移植有报错,欢迎留言,协助你分析报错!】,
这样一个HAL的工程模板就建立好了。