OpenEdv-开源电子网

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

请教关于函数调用的几个问题

[复制链接]

4

主题

11

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2019-10-30
在线时间
6 小时
发表于 2020-2-14 14:46:02 | 显示全部楼层 |阅读模式
1金钱
请教几个很菜的问题:如图
问题一:首先在1处,已经声明了头文件了,为何下面2处还要再初始化延时函数?


问题二:使用的延时函数是delay_ms();为何还要初始化delay_init();不应用用谁就初始化谁么?


问题三:初始化的位置在main函数里面么?不应该是在外面?



1.png
2.png

最佳答案

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

1、红框2处想要使用delay_init函数,可是delay_init函数里的内容并不在main.c文件里。图2delay.h的作用就是让别的文件能找到这个函数的主体,别的文件只要include了delay.h就可以找到delay_init这个函数了 2、看不懂问的是什么意思,你不初始化怎么用相关的函数?就像使用IO口时,你不初始化GPIO,直接就令PA0输出高/低,他也不可能听话啊 3、程序从main函数开始,肯定是在main函数里执行初始化啊,写在外面是为了好看,如果愿意 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

16

主题

426

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2765
金钱
2765
注册时间
2018-11-8
在线时间
438 小时
发表于 2020-2-14 14:46:03 | 显示全部楼层
1、红框2处想要使用delay_init函数,可是delay_init函数里的内容并不在main.c文件里。图2delay.h的作用就是让别的文件能找到这个函数的主体,别的文件只要include了delay.h就可以找到delay_init这个函数了
2、看不懂问的是什么意思,你不初始化怎么用相关的函数?就像使用IO口时,你不初始化GPIO,直接就令PA0输出高/低,他也不可能听话啊
3、程序从main函数开始,肯定是在main函数里执行初始化啊,写在外面是为了好看,如果愿意你可以把所有的语句全都写在main函数里。一般把一些语句摘出来做成一个小函数放在main函数外,然后在main函数里调用这个函数。就像寄快递先把一些东西装到小盒子里,之后再装到main函数这个大盒子里一样。如果你不嫌乱都扔到一个盒子里完全可以
回复

使用道具 举报

15

主题

1061

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
3625
金钱
3625
注册时间
2019-8-14
在线时间
1054 小时
发表于 2020-2-14 18:25:36 | 显示全部楼层
1.只有在这个.c文件里添加了你要调用的函数对应的.h文件,才可以在这个.c文件里使用.h里的函数
2.delay_init()是个初始化函数,你想要调用有用到延时函数的话,必须要先在程序里进行初始化
3.初始化函数需要在主函数里面,在你想要调用的函数的前面
回复

使用道具 举报

4

主题

11

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2019-10-30
在线时间
6 小时
 楼主| 发表于 2020-2-15 09:25:52 | 显示全部楼层
谢谢!
回复

使用道具 举报

4

主题

11

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2019-10-30
在线时间
6 小时
 楼主| 发表于 2020-2-15 10:01:20 | 显示全部楼层
2处准确的说应该是调用初始化函数,这样就都解释通了,谢谢!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-20 19:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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