OpenEdv-开源电子网

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

关于程序中参数传递的问题,请大家知道一下小弟。谢谢

[复制链接]

22

主题

127

帖子

0

精华

高级会员

Rank: 4

积分
913
金钱
913
注册时间
2015-9-17
在线时间
117 小时
发表于 2017-10-16 10:06:01 | 显示全部楼层 |阅读模式
5金钱
我在主程序中通过rct6的ad采集数据,采集到的数据传给e,我想通过外部中断控制按键打印e的值。
定义为:
                   extern float e,D,D1,D2;
主程序中:
                 adcx2=Get_Adc2(ADC_Channel_3);  //获取ADC的值
                D2=(float)adcx2*(3.3/4096);     //将获取的值转换为电压值

                e=(adcx2+(0.01*D2))/(0.00525);

子程序中:
                   void EXTI15_10_IRQHandler(void)
                  {
                       delay_ms(10);    //消抖                         
                        if(KEY1==0)       

                        printf("\r\n e=%f",e);
                 }
程序编译报错,说子程序中e的值未定义。请各位大神帮助一下,谢谢

最佳答案

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

谢谢 技术支持 找到问题了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

127

帖子

0

精华

高级会员

Rank: 4

积分
913
金钱
913
注册时间
2015-9-17
在线时间
117 小时
 楼主| 发表于 2017-10-16 10:06:02 | 显示全部楼层
谢谢 技术支持 找到问题了。
回复

使用道具 举报

5

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
419
金钱
419
注册时间
2015-9-16
在线时间
122 小时
发表于 2017-10-16 10:12:45 | 显示全部楼层
float e;第一次定义,在别的C文件引用的地方加extern float e;另外printf还是不要放在中断里处理比较好。
回复

使用道具 举报

22

主题

127

帖子

0

精华

高级会员

Rank: 4

积分
913
金钱
913
注册时间
2015-9-17
在线时间
117 小时
 楼主| 发表于 2017-10-16 10:15:16 | 显示全部楼层
dozm 发表于 2017-10-16 10:12
float e;第一次定义,在别的C文件引用的地方加extern float e;另外printf还是不要放在中断里处理比较好。

加入这句话还是提示有错误
回复

使用道具 举报

5

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
419
金钱
419
注册时间
2015-9-16
在线时间
122 小时
发表于 2017-10-16 10:19:12 | 显示全部楼层
printf("\r\n e=%f",e); 放到主函数里去打印输出。
回复

使用道具 举报

22

主题

127

帖子

0

精华

高级会员

Rank: 4

积分
913
金钱
913
注册时间
2015-9-17
在线时间
117 小时
 楼主| 发表于 2017-10-16 10:22:12 | 显示全部楼层
dozm 发表于 2017-10-16 10:19
printf("\r\n e=%f",e); 放到主函数里去打印输出。

那如何起到按键控制的效果呢?加个标志位?会对实时信号有影响么?
回复

使用道具 举报

5

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
419
金钱
419
注册时间
2015-9-16
在线时间
122 小时
发表于 2017-10-16 10:26:35 | 显示全部楼层
用标志位,按键对实时性没什么要求。
回复

使用道具 举报

22

主题

127

帖子

0

精华

高级会员

Rank: 4

积分
913
金钱
913
注册时间
2015-9-17
在线时间
117 小时
 楼主| 发表于 2017-10-16 10:30:07 | 显示全部楼层
dozm 发表于 2017-10-16 10:26
用标志位,按键对实时性没什么要求。

谢谢建议,找到问题了。
回复

使用道具 举报

14

主题

110

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
304
金钱
304
注册时间
2016-5-16
在线时间
67 小时
发表于 2017-10-16 10:30:47 | 显示全部楼层
是不是float e的地方是函数内部,是局部变量了?放外部试试
回复

使用道具 举报

2

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2017-9-28
在线时间
19 小时
发表于 2017-10-16 10:31:16 | 显示全部楼层
extern float e,D,D1,D2;只是声明,如果要在外部.c引用,需要先定义float e,D,D1,D2后再声明为全局变量 extern float e,D,D1,D2;这样才能被其他.c文件引用。
回复

使用道具 举报

22

主题

127

帖子

0

精华

高级会员

Rank: 4

积分
913
金钱
913
注册时间
2015-9-17
在线时间
117 小时
 楼主| 发表于 2017-10-16 11:25:41 | 显示全部楼层
624467649 发表于 2017-10-16 10:30
是不是float e的地方是函数内部,是局部变量了?放外部试试

嗯嗯  是的 谢谢你 解决了
回复

使用道具 举报

22

主题

127

帖子

0

精华

高级会员

Rank: 4

积分
913
金钱
913
注册时间
2015-9-17
在线时间
117 小时
 楼主| 发表于 2017-10-16 11:25:58 | 显示全部楼层
lin993586486 发表于 2017-10-16 10:31
extern float e,D,D1,D2;只是声明,如果要在外部.c引用,需要先定义float e,D,D1,D2后再声明为全局变量 ex ...

明白了 谢谢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 10:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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