金牌会员
 
- 积分
- 1750
- 金钱
- 1750
- 注册时间
- 2015-6-11
- 在线时间
- 309 小时
|
发表于 2019-6-4 08:47:43
|
显示全部楼层
本帖最后由 zc123 于 2019-6-4 09:24 编辑
虽然我也讨厌HAL库的雍肿,效率低,但你这是实现stm32f10x.h这个头文件的在封装而已,HAL库实现的是接口API和软件逻辑,这才是主要功能,类似USART,RCC,ETH模块,它是实现初始化,读写接口的,中断响应,状态读取/清除这整套API应用的,你的封装思路是没有这部分逻辑的,其实你的思路和寄存器操作一样的,库和寄存器的使用这方面争论已经持续很久,我是认为没比较的理由,因为设计的目的都不一样,库是为了脱离硬件的封装,寄存器则为了更高的效率,没有任何可比性。
你的优势就是和直接的寄存器操作的比较,大部分情况比直接包含stm32f10x.h更直观。但是实际上按照你的API,脱离寄存器文档是不可能,因为涉及位的操作,特别是多位的操作,不去查文档,单靠命名并不能完全解决问题,我的建议是需要先理清楚这个是否是伪需求,不然花了大量时间并不值得,而且这里面大部分是替换的工作量,核心的就位操作或者位域的知识。
|
|