请教如何减少在stm32代码设计中使用全局变量?

JACKY88888889 2021-01-13 01:44:46
应用场景举例:N1-N10 一共10个 .c文件,其中N1.h中的结构体Time_Struct定义为:
 typedef struct
{
int Hour;
int minute;
char second;
}
TimeTypedef;


N1.c中定义了变量TimeStruct;

N2.C中需要读TimeStruct. Hour的值。
N3.C中需要对TimeStruct. minute加(防止超范围肯定先读)。
N4.C中需要对TimeStruct. minute减(防止超范围肯定先读)。

对于这个变量的处理办法我能想的处理办法如下:
(1) 用extern方式 全局变满天飞,耦合性太强,后面升级维护麻烦。主要是牵一发而动全身,不建议用。
(2)写成函数,通过传参来赋值或者读取,耦合性可以有效避免,但是如果程序一复杂,项目中会有超多函数,很多函数建立的目的就是为了传参的。
(3)在要用到TimeStruct的非N1的其他.C文件中,通过注册的方式(二级指针)。

鉴于是裸机,没有带操作系统时能用到什么进程通信的概念。不知道如何处理为好,发帖主要是想请教下大家平常设计时是如何处理这种需求的?谢谢!
...全文
1444 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
JACKY88888889 2021-01-15
  • 打赏
  • 举报
回复
好的,谢谢大佬的热心指点!
cypressxt926 2021-01-15
  • 打赏
  • 举报
回复
就用方法二,写几个接口就好了,哪里会有很多? 你这个结构体里面就只有int和char,所以get set各搞两个就行了,再各搞一个全结构体读取赋值的。最近我也在思考这个问题,写了一篇帖子,一起来探讨探讨 我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《STM32 KEIL C99编程(一)使用指针修改const变量的探索》, 一起来围观吧 https://blog.csdn.net/cypressxt926/article/details/112589717?utm_source=app&app_version=4.5.0
cypressxt926 2021-01-15
  • 打赏
  • 举报
回复
就用方法二,写几个接口就好了,哪里会有很多? 你这个结构体里面就只有int和char,所以get set各搞两个就行了,再各搞一个全结构体读取赋值的。最近我也在思考这个问题,写了一篇帖子,一起来探讨探讨 我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《STM32 KEIL C99编程(一)使用指针修改const变量的探索》, 一起来围观吧 https://blog.csdn.net/cypressxt926/article/details/112589717?utm_source=app&app_version=4.5.0
cypressxt926 2021-01-15
  • 打赏
  • 举报
回复
就用方法2啊 哪里会需要很多函数?
  • 打赏
  • 举报
回复
1,搞一个自己的头文件,把需要用extern来声明的变量函数之类的全扔进去。 2,每一个涉及外部变量和函数的.c文件都去包涵这个头文件就好了。
JACKY88888889 2021-01-13
  • 打赏
  • 举报
回复
自己顶一下

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧