原帖 | Jack | 2026-03-24 14:21 | 👍0 | 阅读约1
老师,在编写某个外设驱动时,我知道可以通过数据手册查到单个寄存器或某个功能点,但我不清楚“从无到有”应该按什么顺序完成整个初始化和启动流程。也就是说,我不知道一个功能能够正常工作,到底需要先配置哪些前置条件、再配置哪些寄存器、最后如何使能功能或中断。
比如写串口驱动时:
如果我想打开“发送完成中断”,
我知道可能涉及中断使能、状态位清除、外设开启等操作,
但我不清楚这些步骤的完整流程是怎么分析出来的,
也不清楚应该如何从芯片手册中判断:哪些配置是必须的,哪些是前置条件,哪些是最后一步。
你举的 GPIO 也是同样的问题:
GPIO 不是直接“用”就行,
还要先设置模式、复用功能、电气属性等,
所以每个外设似乎都有自己的一套初始化流程。
于是你的真正困惑是:
当面对一个新的芯片、一个新的外设时,我该怎么系统地梳理它的驱动初始化流程?
也就是说,除了查手册知道某个寄存器“是什么”,我更想知道:如何从手册中建立“这个驱动应该先做什么、后做什么”的整体思路。
答:
你使用HAL库的话,其实本质是在使用一个SDK,那么这个SDK一定会有其使用方法的描述,你可以看.h文件的描述,另外官方文档也描述了如何使用,这是本质。
每个厂家都又自己的sdk 以及对应的实现外设运行的工作流程
里面是厂家自己i验证过的 甚至说里面还有芯片设计问题用软件去修复的
完全从寄存器去做 你就是再去走一遍sdk的路程, 项目资源不会让你去做这样分配的,别人是买芯片的 又这个义务去维护好sdk的运行 你做项目就没有这个任务了。
相关笔记