[问题] 关于ARM系列MCU的函式库

楼主: icetofux   2018-08-07 14:42:22
最近在学习使用ARM系列的MCU,我使用的是STM32系列的开发板,发现光是最基本的I/O
操作,就有直接操作暂存器、使用CMSIS函式库、使用HAL函式库等三种方式能做到。
目前理解是CMSIS是针对暂存器操作的抽象化实作,只要是Cortex M系列的MCU都通用,
可以很方便的在不同的IC间互相移植,并且减轻更换IC所造成的学习时间成本。
HAL感觉跟CMSIS有点接近,但只针对STM32系列有效。
目前用CubeMX产生出来的样板专案好像是采用HAL,但实务上大家比较常看到哪一种呢?
另外还有两个问题是个人满好奇的,也许未来学习的过程就会得到解答,但如果各位先
进愿意提前给我指点我会很感激:
看介绍CMSIS理念上的确是个很棒的东西,但是各家MCU周边硬件百百款,CMSIS真的有办
法包的下所有的周边吗?
另外就是CMSIS是ARM所主导的,所以理所当然只为ARM的Cortex M系列所用,但是根据以
往经验,当面临到换IC的情境下,没办法保证未来采用的一定是ARM系列的IC,也许会因
为各种考量换成其他架构的MCU。那么用CMSIS或是HAL这类的函式库对专案的可移植性或
可维护性是真的有帮助的吗?毕竟要是真的换MCU架构了还是得全部打掉重来。
谢谢大家。
作者: james732 (好人超)   2018-08-08 00:38:00
考虑移植性来说,直接操作暂存器是最糟的选项新的MCU如果没有抽象层,顶多自己做一个总之就是要把"硬件相依"与"硬件无关"的程式码完全分开
作者: ypyp1010 (Nigel)   2018-08-08 09:22:00
请问下James为什么直接操作暂存器会最糟阿...主要应用层的程式,跟MCU功能设定完全分离,不论用什么架构应该都好换,除非是使用到MCU特殊功能像我用ST的HAL就用的超不习惯,设定GPIO很麻烦...
楼主: icetofux   2018-08-08 10:10:00
ypyp你的意思是自己实作类似CMSIS或HAL的函式库,把底层操作跟程式逻辑分开吗?
作者: ypyp1010 (Nigel)   2018-08-08 14:35:00
应用跟mcu底层是本来就要分开的,不论在CMSIS或HAL,但是我会依自己习惯去改,像ST的HAL就包超多.c跟.h,看了就烦,要k这种架构写出来的code也很烦,我都把他移掉,改成自己的东西,好处是很浅显易懂,坏处是要花时间,而且不是大众平台,别人要用会不方便,我其实也在找看有没有别的比较好的方法
楼主: icetofux   2018-08-08 16:16:00
看来大家都在想一样的事呢XD
作者: MasterChang (我爱ASM)   2018-08-10 01:37:00
写习惯就好,ST、新唐、Microchip的Crotex-M都有在用没什么差,转换也不过一天的事情。顶多USB、Ethernet这类比较麻烦的周边要花点时间处理。反正看顾客要什么就用什么方案....自己选的话就用ST的,CubeMx初始化可以省不少时间。

Links booklink

Contact Us: admin [ a t ] ucptt.com