找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1412|回复: 6
打印 上一主题 下一主题
收起左侧

STM32 systick定时数组循环赋值,不会循环赋值?

[复制链接]
回帖奖励 10 黑币 回复本帖可获得 10 黑币奖励! 每人限 1 次
跳转到指定楼层
楼主
ID:909570 发表于 2021-5-28 14:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
systick定时20ms得一个值放入数组中,连续取50个数(1s)得到一个数组,然后去掉第一个和左后一个值计算剩下值得平均值。第一个1秒得到一个数组,后面定时时间内得不到值。我想每隔1秒都能得到一个数组,求各位教教我,谢谢!

static int16_t BatAdcCount=50;//1秒的定时次数
static uint32_t Bat_VotageAD[10];
void BatVoltageAD(int arg)//20ms执行一次,
{
      if(BatAdcCount!=0)  //计数50次,就是1秒,得到一个数组Bat_VotageAD[50]
     {
          Bat_VotageAD[BatAdcCount-1] = AdcValueGet(BAT_DETECT_CHANNEL);
          BatAdcCount--;
      }
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:844772 发表于 2021-5-28 15:06 | 只看该作者
你的中断函数怎么写的,没看到;你在哪里恢复BatAdcCount=50了呢?没有恢复就没法得到新的数组啊;还有如果仅仅就是要个平均值,不用数组直接累加就行了;

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:909570 发表于 2021-5-28 15:13 | 只看该作者
glinfei 发表于 2021-5-28 15:06
你的中断函数怎么写的,没看到;你在哪里恢复BatAdcCount=50了呢?没有恢复就没法得到新的数组啊;还有如果 ...

我是这样做的:在        TimerOnMsRepeatDelay(BatADCTimer,10,BatVoltageAD,0);这里是BatADCTimer=10ms回调函数BatVoltageAD, 然后再另一个    TimerOnMsRepeatDelay(PowerBatteryTimer, 100, PowerManagerOpt, 500);//每100ms 里的PowerManagerOpt回调函数内部求平均值,并恢复BatAdcCount=50

回复

使用道具 举报

地板
ID:94031 发表于 2021-5-28 15:19 | 只看该作者
中断里只负责放数,处理工作放在主循环里,50个放够处理一次。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

5#
ID:909570 发表于 2021-5-28 15:27 | 只看该作者
xuyaqi 发表于 2021-5-28 15:19
中断里只负责放数,处理工作放在主循环里,50个放够处理一次。

SysTick_Handler是1ms中断一次,你是说把下面的

    if(BatAdcCount!=0)  //计数50次,就是1秒,得到一个数组Bat_VotageAD[50]
      {
           Bat_VotageAD[BatAdcCount-1] = AdcValueGet(BAT_DETECT_CHANNEL);
           BatAdcCount--;
       }
放入中断函数里面吗? 但它是20ms得一个数组元素,而中断时间是1ms
回复

使用道具 举报

6#
ID:909570 发表于 2021-5-28 15:34 | 只看该作者
而且如果不用数组,怎么直接叠加求平均值呢?
回复

使用道具 举报

7#
ID:844772 发表于 2021-5-28 15:48 | 只看该作者
laym 发表于 2021-5-28 15:34
而且如果不用数组,怎么直接叠加求平均值呢?

你就读一个,累加一下;读完了再求平均。 要不你把主程序,中断和调用的程序都贴一下,否则没有流程图知识叙述两句很难懂的。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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