发 帖  
[问答]

带返回值的函数给全局变量赋值时出错,返回的值一直无变化

3337 STM32
已退回10积分
2024-7-13 21:24:59   2 评论 分享淘帖 邀请回答 举报
2 条评论
  • 2024-7-13 23:57

    int16_t Encoder_Get(void)
    {
        /*使用Temp变量作为中继,目的是返回Encoder_Count后将其清零*/
        /*在这里,也可以直接返回Encoder_Count
          但这样就不是获取增量值的操作方法了
          也可以实现功能,只是思路不一样*/
        int16_t Temp;
        Temp = Encoder_Count;
        Encoder_Count = 0;
        return Temp;
    }



    经过我多方排查,终于找到问题点了,出问题的地方就是这个获取增量值函数里面:Encoder_Count = 0;这句代码,加上这句,Return回去的值一直是0,不是需要的增量值,Temp一开始是增量值,等到执行该句代码后,Temp也变为常量0了,所以导致值一直是0,将该句代码注释掉后,一切显示正常。

    也终于理解UP主为啥采用Num += Encoder_Get(); 的方式。
    但是为啥执行那句代码后,Temp也变常量0了呢?不是应该Encoder_Count清零之前的值么?

    陨星糖豆 回复 Duffy_Ma: 2024-8-16 10:27

    建议有时间先学一下C语言。函数内定义的Temp只是一个临时变量,退出Encoder_Get后就会被释放掉了。如果想保留这个值可以加static定义成静态变量.

1个回答
2024-7-13 23:57:11 评论

举报

撰写答案

你正在撰写答案

如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。

您需要登录后才可以回帖 登录/注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
快速回复 返回顶部 返回列表
关注微信公众号

电子发烧友网

电子发烧友论坛

社区合作
刘勇
联系电话:15994832713
邮箱地址:liuyong@huaqiu.com
社区管理
elecfans短短
微信:elecfans_666
邮箱:users@huaqiu.com
关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表
-

厂商专区

飞凌嵌入式

瑞萨单片机论坛

米尔电子

Aigtek安泰电子

斯丹麦德电子

芯佰微电子

其利天下技术小组

道生物联技术社区

视美泰

FCom富士晶振

大大通

合众恒跃

进迭时空

RT-Thread论坛

EASY-EAI灵眸科技

-

技术社区

张飞电子技术社区

KaihongOS技术社区

FPGA开发者技术社区

RISC-V MCU技术社区

HarmonyOS技术社区

-

OpenHarmony开源社区

OpenHarmony开源社区

-

嵌入式论坛

ARM技术论坛

STM32/STM8技术论坛

嵌入式技术论坛

单片机/MCU论坛

RISC-V技术论坛

瑞芯微Rockchip开发者社区

FPGA|CPLD|ASIC论坛

DSP论坛

-

电路图及DIY

电路设计论坛

DIY及创意

电子元器件论坛

专家问答

-

电源技术论坛

电源技术论坛

无线充电技术

-

综合技术与应用

机器人论坛

USB论坛

电机控制

模拟技术

音视频技术

综合技术交流

上位机软件(C/Python/Java等)

-

无线通信论坛

WIFI技术

蓝牙技术

天线|RF射频|微波|雷达技术

-

EDA设计论坛

PCB设计论坛

DigiPCBA论坛

Protel|AD|DXP论坛

PADS技术论坛

Allegro论坛

multisim论坛

proteus论坛|仿真论坛

KiCad EDA 中文论坛

DFM|可制造性设计论坛

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术

传感技术

-

招聘/交友/外包/交易/杂谈

项目外包

供需及二手交易

工程师杂谈|交友

招聘|求职|工程师职场

-

官方社区

发烧友官方/活动

华秋商城

华秋电路

+

元器件搜索引擎

元器件搜索引擎