一、前言
Arm的应用场景往往比51单片机复杂得多,如果一个高级应用的开发需要连底层的结构性代码都要重构,那么在成本和研发周期上就会面临巨大的风险。为了简化编码过程,芯片厂商经常会提供一些板卡级支持的BSP包,系统级支持的SDK包,或者芯片级支持的HAL层。对于stm32系列的芯片,意法半导体公司提供一个了cube包,它包含的内容很广泛(HAL,CMSIS,中间层,RTOS),灵活应用这个代码包将使开发过程更加高效。
stm.cube下载地址:
http://www.stmcu.com.cn/design_resources.html
二、系统架构
系统架构图
基本上整个cube的代码架构可以分成三层。底层、中间层和上层。
2.1 Level 0
底层Level0包含HAL、BSP和一些HAL的调用例子。
HAL硬件抽象层
这一层包含一些控制片内资源的库函数,比如adc、i2s。它使得寄存器含义和一些协议细节对用户透明了,HAL是行为级的代码。
比如stm32f1xx_hal_gpio.c下提供的这几个函数:
/*