查看: 973|回复: 13

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

[复制链接]

该用户从未签到

发表于 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-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

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

    [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-10-24 16:27
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 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前面

    该用户从未签到

     楼主| 发表于 2018-9-24 10:36 | 显示全部楼层
    zxldwlsj 发表于 2018-9-15 10:55
    定义全局变量 int i=0; 放在在setup前面

    定义全局变量 int i=0; 放在在setup前面,是没用的。每次自定义函数被调用,变量都会被重新创建,导致变量又从0开始计算。你可以试试。
  • TA的每日心情
    无聊
    2018-11-2 11:36
  • 签到天数: 25 天

    [LV.4]偶尔看看III

    发表于 2018-9-24 12:23 | 显示全部楼层
    试了你的代码,i可以改变。
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    KittenBot杯第六届开源硬件开发大赛启动啦
    KittenBot杯第六届开源硬
    大赛简介: 第六届开源硬件开发大赛由Arduino中文社区发起 由KittenBot冠名赞助
    【原创】制作一套USB电流采样板
    【原创】制作一套USB电流
    以前用 0.1Ω(R1J)曾经做过一个 USB 电流采集器,基本原理和 USB 电流表一致, 唯一
    arduino数字输出端低电平不稳定
    arduino数字输出端低电平
    我在做的功能: 用一个光电开关(买好的现成元件),发出高电平信号输入给arduino,然
    [Arduino物联网开发实战2]数据反馈
    [Arduino物联网开发实战2]
    [md]上一篇:(https://www.arduino.cn/thread-83177-1-1.html) ### 添加DIY组件
    博哥零基础教你玩转ESP8266(十四) ESP8266HTTPClient 连接世界
    博哥零基础教你玩转ESP826
    帖子导航帖 博哥零基础教你玩转ESP8266(一) 重识ESP8266 博哥零基础教你玩转ESP8266
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表