STM32 HAL驱动程序是否基于CMSIS?

sr4lhrrt  于 2023-06-21  发布在  其他
关注(0)|答案(1)|浏览(265)

我想知道HAL驱动程序是如何实现的,更一般地说,CMSIS是如何参与基于ARM的微控制器(特别是STM32微控制器,还有Cypress PSoc)的外围驱动程序的。

问题是:由于HAL驱动器为微控制器的外围设备提供了高级接口,因此它们的实现达到了裸机级别,或者更确切地说,最低层是用CMSIS封装实现的,并且HAL从它们开始开发。

任何答案都可以接受,因为我试图理解这两种类型的“库”是如何联系在一起的。

o2rvlv0m

o2rvlv0m1#

关于HAL驱动程序(例如对于STM32)与CMSIS交互,它们使用CMSIS-CORE作为“较低层”来接口到硬件。
CMSIS-CORE提供了诸如内存布局、中断编号、外设基地址、外设寄存器相对于基地址的偏移量等内容的定义,甚至还提供了所有寄存器位的定义。
这以分层的方式完成,例如(对于STM32F030)您可能有一个Cortex-M0 CPU的头文件,一个用于STM32 F0系列,最后一个用于确切的STM32 F030芯片。
但是CMSIS-CORE不提供任何实际的功能代码。只是定义。头文件中定义了一些小的内联函数,用于启用和禁用中断或重置MCU。但是没有“驱动程序”代码。
STM32 HAL提供驱动程序代码来实际控制这些外设,并使用CMSIS-CORE中的定义来实现。所以要回答这个问题:HAL不直接访问“裸机”,它使用CMSIS-CORE。
way more to CMSIS而不仅仅是CMSIS-CORE,但我不知道它们是否与您关于HAL的问题有关。

相关问题