查看: 109|回复: 7

[未解决] 如何保存上一次函数调用时生成的数据(只需函数内使用)

[复制链接]

该用户从未签到

发表于 2018-9-14 09:51 | 显示全部楼层 |阅读模式
我在制作一个两路的脉冲发生器,用定时器0产生一个脉冲,然后在输出脚引线定时器1,用外部中断去自动计算脉冲,每数到6个脉冲产生一个第二路脉冲,当中断的发生时,调用一个计数函数:
setup()
    {
    serial begin(9600);
     //定时产生脉冲的程序,略
    }
loop()
    {
  attachInterrupt(1, count_num, RISING);  
       }

void count_num()
    {
      static int i;
      i++;
     if (i%5==0)
       {
      digital.Write(5,!digitalRead(5));
      serial.print(i);
       }
   }

现在问题是,count_num()函数里面,i的值一直是1,中断发生时,每调用一次count_num(),i自动重新赋值为0,不会保存上一次调用count_num()时的i值用来继续递增。
各位帮看看,如何让i值随着循环自动递增。而不会被每调用一次就清零。


该用户从未签到

 楼主| 发表于 2018-9-14 09:54 | 显示全部楼层
  我把 static int i,放在setup()前面也没用。
  • TA的每日心情
    奋斗
    2018-8-17 09:12
  • 签到天数: 47 天

    [LV.5]常住居民I

    发表于 2018-9-14 10:28 | 显示全部楼层
    定义在函数外即可
    如果以上内容对你有帮助,你可以通过打赏支持作者
  • TA的每日心情
    开心
    2018-9-20 06:22
  • 签到天数: 538 天

    [LV.9]以坛为家II

    发表于 2018-9-14 10:28 | 显示全部楼层
    luckyhawk 发表于 2018-9-14 09:54
    我把 static int i,放在setup()前面也没用。

    attachInterrupt(1, count_num, RISING);应该放在setup()里的吧
  • TA的每日心情
    开心
    2018-9-18 08:36
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2018-9-14 14:34 | 显示全部楼层
    传参,把i放外面,需要继续调用函数时再传进去

    该用户从未签到

     楼主| 发表于 2018-9-14 23:23 | 显示全部楼层
    andrew1983 发表于 2018-9-14 14:34
    传参,把i放外面,需要继续调用函数时再传进去

    好像中断里不能带参数吧?

    该用户从未签到

    发表于 2018-9-15 10:55 | 显示全部楼层
    定义全局变量 int i=0; 放在在setup前面
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    IDE 用arbuBlok下载不了程序。
    IDE 用arbuBlok下载不了程
    点击下载到板子就出现红字体 版本是1.8.7
    初学arduino求助
    初学arduino求助
    大佬们,我想问一下,我现在想做一个程序:按下开关持续时间t,延迟7.77t后点亮led0.
    吸顶灯接入物联网(基于Blinker与wifi开发板)
    吸顶灯接入物联网(基于Bli
    暑假开始接触Blinker和esp8266开发板,一直在捣鼓。。开学是肯定没空碰了,于是趁现在
    原创 drawbot平面关节机械臂 教程直播贴
    原创 drawbot平面关节机械
    这个项目上个月就在做了,结构和代码反反复复改了多次,加上自己又太懒,一直没来得及
    创客集结号之光控LED实验
    创客集结号之光控LED实验
    本次实验是在创客集结号上分享出来的,是做一个光控LED实验。 1.实验器件: Arduino
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表