OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3417|回复: 4

struct function 后无法 传送CAN BOX信息

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-11-28
在线时间
1 小时
发表于 2017-11-28 16:28:23 | 显示全部楼层 |阅读模式
3金钱
小弟设计遇到了一个诡异的问题
当我将 third(B.b);批注后,CANBOX可以接收到Data=8的信息,但当 third(B.b); 取消批注就无法从我自己设计的窗口PrintCAN收到的值
但从Debugmodewatch window观察Data依然等于8,说明程序是有继续执行的。
有点难形容,用很简略的说法就是, third(B.b); 批注与否会影响到CAN的接收,但watchwindow又可以看见运算结果都是正确的(ex.Data=8),不知道何解.....
还请各位帮忙分析一下,这比较像是function的设计bug,还是内存配置的bug呢?
程序架构为
#include <stdlib.h>
#include <stdio.h>
float input={1,2,3,4,5};   //随意几个浮点数
///////////struct宣告///////////
struct A{
      floattest
} a;
struct B{
      floattest
} b;
struct C{
      floattest
} c;
/////////////////////////////
///////////算法function 设计///////////
float first(float input[])
{算法内容}
float second(float input[])
{算法内容}
float third(float input[])
{算法内容}
////////////////////////////////////////////
static CanTxMsgTypeDef TxMessage;  
hcan1.pTxMsg = &TxMessage;
int main(void)
{
         first(input);    ///得到A.a的值   
         second(A.a);  ///得到B.b的值   
          third(B.b);    ///得到C.c的值   
         hcan1.pTxMsg->Data = 0x08;
while (1)
      {
              HAL_CAN_Transmit(&hcan1, 0);
              HAL_Delay(50);
      }
}


最佳答案

查看完整内容[请看2#楼]

局部变量太多,导致堆栈不够,发生中断就死了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-11-28 16:28:24 | 显示全部楼层
mp6bjo4 发表于 2017-11-29 14:30
似乎找到问题了,好像是局部变量的矩阵空间过大,我把局部变量的矩阵改宣告为全局变量就可以RUN了!

不过 ...

局部变量太多,导致堆栈不够,发生中断就死了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-11-29 00:52:15 | 显示全部楼层
帮顶
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-11-28
在线时间
1 小时
 楼主| 发表于 2017-11-29 14:30:05 | 显示全部楼层
似乎找到问题了,好像是局部变量的矩阵空间过大,我把局部变量的矩阵改宣告为全局变量就可以RUN了!

不过,这是甚么原因呀?有谁能教教我吗?
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-11-28
在线时间
1 小时
 楼主| 发表于 2017-11-30 10:10:01 | 显示全部楼层
原來如此,謝謝您!
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 17:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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