重新认识结构体:为什么 STM32 库函数喜欢接收一大包参数
《重新认识结构体:为什么 STM32 库函数喜欢接收一大包参数》这篇在博客园热度很高,讲的正是大家天天碰到的事。下面帮你把要点捋出来,结尾有能直接抄的结论。
经典三问 Q: C 语言结构体是什么? A: 它是把多个有名称的成员组合成一个数据对象的类型,可以同时保存一组相关配置。 Q: 为什么库函数需要接收结构体? A: 外设配置往往有多个彼此相关的字段,结构体能让调用接口保持稳定,也让参数含义更清楚。 Q: 结构体常见使用场景? A: GPIO、定时器、串口等外设初始化,以及保存传感器数据、菜单项和控制器参数。 上一篇里,我把 GPIO_InitTypeDef 留在了这里: [代码示例略] 我第一次看到这几行,先冒出来的是一串问题:为什么会有这么多参数?每个参数到底管什么?它们应该放在哪里?为什么最后还要把 &gpio 交给另一个函数? 这次先不急着背 GPIO_InitTypeDef 。
经典三问 Q: C 语言结构体是什么? A: 它是把多个有名称的成员组合成一个数据对象的类型,可以同时保存一组相关配置。 Q: 为什么库函数需要接收结构体? A: 外设配置往往有多个彼此相关的字段,结构体能让调用接口保持稳定,也让参数含义更清楚。 Q: 结构体常见使用场景? A: GPIO、定时器、串口等外设初始化,以及保存传感器数据、菜单项和控制器参数。 上一篇里,我把 GPIO_InitTypeDef 留在了这里: [代码示例略] 我第一次看到这几行,先冒出来的是一串问题:为什么会有这么多参数?每个参数到底管什么?它们应该放在哪里?为什么最后还要把 &gpio 交给另一个函数? 这次先不急着背 GPIO_InitTypeDef 。我们退回普通 C,看看结构体到底在解决什么麻烦。
经典三问 Q: C 语言结构体是什么? A: 它是把多个有名称的成员组合成一个数据对象的类型,可以同时保存一组相关配置。 Q: 为什么库函数需要接收结构体? A: 外设配置往往有多个彼此相关的字段,结构体能让调用接口保持稳定,也让参数含义更清楚。 Q: 结构体常见使用场景? A: GPIO、定时器、串口等外设初始化,以及保存传感器数据、菜单项和控制器参数。 上一篇里,我把 GPIO_InitTypeDef 留在了这里: [代码示例略] 我第一次看到这几行,先冒出来的是一串问题:为什么会有这么多参数?每个参数到底管什么?它们应该放在哪里?为什么最后还要把 &gpio 交给另一个函数? 这次先不急着背 GPIO_InitTypeDef 。我们退回普通 C,看看结构体到底在解决什么麻烦。 参数开始变多以后 假设要写一个函数,给一辆车设置速度、方向和刹车状态: [代码示例略] 参数少时还能看懂。
经典三问 Q: C 语言结构体是什么? A: 它是把多个有名称的成员组合成一个数据对象的类型,可以同时保存一组相关配置。 Q: 为什么库函数需要接收结构体? A: 外设配置往往有多个彼此相关的字段,结构体能让调用接口保持稳定,也让参数含义更清楚。 Q: 结构体常见使用场景? A: GPIO、定时器、串口等外设初始化,以及保存传感器数据、菜单项和控制器参数。 上一篇里,我把 GPIO_InitTypeDef 留在了这里: [代码示例略] 我第一次看到这几行,先冒出来的是一串问题:为什么会有这么多参数?每个参数到底管什么?它们应该放在哪里?为什么最后还要把 &gpio 交给另一个函数? 这次先不急着背 GPIO_InitTypeDef 。我们退回普通 C,看看结构体到底在解决什么麻烦。 参数开始变多以后 假设要写一个函数,给一辆车设置速度、方向和刹车状态: [代码示例略] 参数少时还能看懂。调用时,三个数字分别对应速度、方向和刹车: [代码示例略] 但如果后来又加上加速度限制、电机编号、是否允许反转,函数可能变成这样: [代码示例略] 调用就会变成一串不容易读懂的数字: [代码示例略] 只看这一行,很难立刻确认 50 是加速度,还是电机编号;最后两个 1 、 2 交换位置,编译器也不会提醒你,因为它们的类型都是 uint8_t 。
经典三问 Q: C 语言结构体是什么? A: 它是把多个有名称的成员组合成一个数据对象的类型,可以同时保存一组相关配置。 Q: 为什么库函数需要接收结构体? A: 外设配置往往有多个彼此相关的字段,结构体能让调用接口保持稳定,也让参数含义更清楚。 Q: 结构体常见使用场景? A: GPIO、定时器、串口等外设初始化,以及保存传感器数据、菜单项和控制器参数。 上一篇里,我把 GPIO_InitTypeDef 留在了这里: [代码示例略] 我第一次看到这几行,先冒出来的是一串问题:为什么会有这么多参数?每个参数到底管什么?它们应该放在哪里?为什么最后还要把 &gpio 交给另一个函数? 这次先不急着背 GPIO_InitTypeDef 。我们退回普通 C,看看结构体到底在解决什么麻烦。 参数开始变多以后 假设要写一个函数,给一辆车设置速度、方向和刹车状态: [代码示例略] 参数少时还能看懂。调用时,三个数字分别对应速度、方向和刹车: [代码示例略] 但如果后来又加上加速度限制、电机编号、是否允许反转,函数可能变成这样: [代码示例略] 调用就会变成一串不容易读懂的数字: [代码示例略] 只看这一行,很难立刻确认 50 是加速度,还是电机编号;最后两个 1 、 2 交换位置,编译器也不会提醒你,因为它们的类型都是 uint8_t 。参数越多,函数调用就越像一张没有列名的表。
读完别停:把最触动你的一条记下来,这周就用上。能落地的阅读才算数,欢迎回来聊聊你的实践结果。 来源|博客园《重新认识结构体:为什么 STM32 库函数喜欢接收一大包参数》,https://www.cnblogs.com/zw-awa/p/22972644.html
评论(0)
暂无评论,来抢第一条。