普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 3844|回复: 11

新人关于变量定义问题

[复制链接]

2

主题

4

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2020-6-22 15:08:42 | 显示全部楼层 |阅读模式
在学习dac时,自己改了一下程序,发现了一个关于变量声明的问题
请教各位详细指导一下。
u8 dackey;
u16 dac_val=0;
void up_or_down_val(void)
{
        dackey=key_scan(0);
        if(dackey==k_up_bit)
        {
                dac_val+=400;
                if(dac_val>=4000)
                {
                        dac_val=4095;
                }
                DAC_SetChannel1Data(DAC_Align_12b_R,dac_val);
        }
  else if(dackey==k_down_bit)       
        {
                dac_val-=400;
                if(dac_val<=0)
                {
                        dac_val=0;
                }
                DAC_SetChannel1Data(DAC_Align_12b_R,dac_val);
        }
}
这种定义在函数外部的变量声明,经过主函数调用up_or_down_va后,dac_val数值会增加
void up_or_down_val(void)
{
u8 dackey;
u16 dac_val=0;
}
如果变量的声明在函数内部
dac_val只会增加一次,后续无论怎么按键都不会改变



回复

使用道具 举报

2

主题

4

帖子

22

积分

新手上路

Rank: 1

积分
22
 楼主| 发表于 2020-6-23 14:38:16 | 显示全部楼层
已经明白了,这个是局部变量和全局变量的关系,在mian中调用函数,因为采用局部变量,每次使用完成后,变量被释放了。可以增加返回值或者是定义静态变量
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-20 08:01 , Processed in 0.084664 second(s), 33 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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