首页/新闻资讯/正文详情

嵌入式c语言中方式一函数调用后错误状态旗标全局变量参与赋值运算,记录有效数据

发布时间:2026/9/27 22:31:23 来源:云帆数科 栏目:资讯中心
嵌入式c语言中方式一函数调用后错误状态旗标全局变量参与赋值运算,记录有效数据
我在文章“c语言常量、变量按照功能划分”中提到c语言中的变量全局变量分为两类一类是私有全局变量另一类为公共全局变量按照实现的功能进行划分可以划分为两类一种为记录错误状态旗标的变量另外一种为记录真正数值的变量。并且文章中提到我在以前驱动模块代码编写过程中忽略定义使用原生数据类型小数据类型的全局变量造成使用c语言对驱动细节描述不够细致有所缺失这种在后面编程过程中要加强锻炼。今天主要讲解这一类容易被忽略的错误状态旗标全局变量主要讲解这类全局变量的使用我们先看这样的代码if (motor_step_setmotor_step_current motor_step_set0xA0000) { MOTOR_DIR_BACKWARD(); // 因宏定义调用真正为函数调用相当于算法动作完成某些过程 motor_move_dir MOTOR_MOVE_BACKWARD; // 果状态全局变量记录上述过程 motor_update_period(htim6, speed_period); } else if (motor_step_set motor_step_current) { MOTOR_DIR_FORWARD(); // 因宏定义调用真正为函数调用相当于算法动作完成某些过程 motor_move_dir MOTOR_MOVE_FORWARD; // 果状态全局变量记录上述过程 motor_update_period(htim6, speed_period); } else { cmd_data[4] 0xFF; cmd_data[5] 0xFF; cmd_data[6] 0xFF; cmd_data[7] 0xFF; }上述代码中的状态全局变量motor_move_dir记录着马达转动的方向是某一个枚举值要么往前要么往后要么停止。这个全局变量到底被赋值写入哪一个枚举值是由什么确定的呢从代码中我们可能知道答案是由前面的函数调用宏定义调用替代后为函数调用配置输出引脚输出高电平决定的。该函数调用没有利用返回值也就是既不是错误状态码也不是返回某一个运算结果不参与任何运算。也就是我以前说的方式一编写的函数被父函数调用不参与任何运算但是毕竟调用完成了某些过程行为如果引起某些状态变化可以直接在后面使用状态对应全局变量进行“赋值运算”。这个过程有点像以前的公分制每天去地里干活完成了某些过程行为晚上回家后记录下来记录的过程就是赋值的过程。这个过程函数调用是“因”状态全局变量是“果”。总结方式一编写的函数被父函数传参调用后完成某些过程行为虽然没有返回值无法参与后面任何逻辑运算或者算术运算如果函数调用后引起某些状态全局变量数值变动的话需要紧跟着函数调用后面使用赋值运算符修改对应状态全局变量的值。方式一函数被调用并不是没有任何影响毕竟完成某些过程行为需要后面使用状态旗标错误全局变量参与赋值运算写入对应正确数值。提示1函数调用无论是否有返回值都会产生某些有效数据需要记录或者参与某些运算也包括赋值运算。2全局变量的特点全局变量的生命周期为整个项目可以在一个函数中对全局变量写入有效数据然后退出在后面其他函数中再对整个全局变量进行处理这就是全局变量不同于临时栈变量的一个特点。

相关推荐

Claude Code(13):MCP 协议与服务器配置指南——settings.json 骨架与连通性验证
Claude Code(13):MCP 协议与服务器配置指南——settings.json 骨架与连通性验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:31:16

Linux进程间通信(五).system Ⅴ共享内存
Linux进程间通信(五).system Ⅴ共享内存

一.何谓system V?这是一套进程间通信的共享内存的标准。二.原理AB进程的处于虚拟地址空间共享区的空间,都通过页表映射到物理内存的同一块区域,这就保证了不同进程看到了同一份资源,进而实现了进程间通信。注意:1.开辟空间&#… · 2026/9/27 22:30:58

摆脱论文困扰:6款2026年靠谱AI写论文工具深度横评——TaoToken统一Key接入配置实战
摆脱论文困扰:6款2026年靠谱AI写论文工具深度横评——TaoToken统一Key接入配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:30:46

用 C++ 写 Web 服务实战(五):SSL/TLS、HTTP/2 与生产环境部署
用 C++ 写 Web 服务实战(五):SSL/TLS、HTTP/2 与生产环境部署

用 C 写 Web 服务实战(五):SSL/TLS、HTTP/2 与生产环境部署 前四篇我们从零搭起了 Web 应用,走完了路由、中间件、文件上传、WebSocket 实时通信和服务端推送。到这为止,你的 C 服务在功能层面已经完整了。但功能完整… · 2026/9/27 23:01:32

ViT 不是和 Transformer 并列的东西:真正该对比的是 CNN 和 Transformer 两套看图方式
ViT 不是和 Transformer 并列的东西:真正该对比的是 CNN 和 Transformer 两套看图方式

摘要:本文先纠正一个常见误区——ViT 并不是和 Transformer 并列的独立架构,它就是 Transformer 在视觉任务上的落地版本。真正值得对比的是 CNN 和 Transformer 这两套“看图方式”:CNN 靠局部窗口层层堆叠扩大视野,省参数、适合… · 2026/9/27 23:01:32

SpringBoot新手最容易忽略的7个细节
SpringBoot新手最容易忽略的7个细节

很多新手跑通第一个接口就以为掌握了SpringBoot,结果上线后才发现坑一个比一个深。框架帮你做了太多默认决策,你不问为什么,它就默认你懂。可这些默认值,恰恰是生产事故的源头。启动类的位置,决定了包扫描的边界Spring… · 2026/9/27 23:01:32

pastel 0.12.0 Windows x64 下载:颜色查看与格式转换示例
pastel 0.12.0 Windows x64 下载:颜色查看与格式转换示例

pastel 0.12.0 Windows x64 下载 官方发行页 本文整理 pastel 0.12.0 的 Windows x64 MSVC 压缩包。备用入口经草料提示页进入夸克,点击“继续访问”后查看文件;实际登录与下载要求以页面为准。 下载文件 文件名:pastel-v0.12.0-x86_64-p… · 2026/9/27 23:01:32

Yolov8训练使用蔬菜检测数据集 蔬菜12类检测 voc yolo 并实现可视化及评估 土豆鸡蛋辣椒胡萝卜黄瓜数据集进行检测
Yolov8训练使用蔬菜检测数据集 蔬菜12类检测 voc yolo 并实现可视化及评估 土豆鸡蛋辣椒胡萝卜黄瓜数据集进行检测

使用Yolov8训练使用蔬菜检测数据集 7400张 蔬菜12类检测 带标注 voc yolo 并实现可视化及评估 蔬菜检测数据集 7400张 蔬菜12类检测 带标注 voc yolo 分类名: (图片张数,标注个数) cabbage: (2097, 2842) potato: (961,3224) onion: (3028&am… · 2026/9/27 23:01:32

Java面试中JVM调优问题,这样回答直接拿offer
Java面试中JVM调优问题,这样回答直接拿offer

面试官推了推眼镜,抛出那个让无数Java程序员心跳加速的问题:“你们线上JVM是怎么调优的?”有人开始背参数,有人直接说“用默认的”,有人把Xmx和Xms念了一遍就没了下文。这个问题之所以难,不是因为它有多深奥… · 2026/9/27 23:01:26

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码