前言: 在《嵌入式开发基础与工程实践》系列中,我们聊了“回调函数”,解决了逻辑层面的解耦问题。 而在后台,经常有读者问我:“代码里的句柄(Handle) 到底是个什么东西?为什么大厂的代码库(SDK)里到处都是句柄?”
其实,“句柄” (Handle) 不仅仅是一个指针,它是 C 语言通向模块化和面向对象架构的第一把钥匙。
今天,我们不谈枯燥的语法,只谈一个最痛的实际问题:当产品需求从“控制 1 个电机”变成“控制 10 个电机”时,你的代码需要推倒重写吗?
一、 这种“菜鸟代码”,你一定写过
假设我们接到了一个任务:写一个电机驱动,控制转速和启停。 对于大多数初学者,或者在为了赶进度的场景下,代码通常是这样写出来的:
1.1 典型的“隐式单例”写法
motor.c (驱动文件) 我们把电机的状态定义为文件内部的全局变量(static),然后用函数直接操作它们。
// [数据区] 全局变量:隐式地只支持一个设备
static uint8_t g_current_speed = 0;
static uint8_t g_is_running = 0;
// [代码区] 操作函数
void Motor_Init(void) {
HAL_GPIO_Init(GPIOA, GPIO_PIN_0,
订阅专栏 解锁全文
554

被折叠的 条评论
为什么被折叠?



