OpenEdv-开源电子网

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

.c和.h文件中的函数定义问题

[复制链接]

77

主题

198

帖子

0

精华

高级会员

Rank: 4

积分
526
金钱
526
注册时间
2013-11-25
在线时间
0 小时
发表于 2014-3-31 18:34:13 | 显示全部楼层 |阅读模式
如果我在.c文件中有如下几个函数:
void PPM_GPIO_Init(void)
{
}
void PPM_TIM_Init(u16 arr,u16 psc)
{
}
void PPM_NVIC_Init(void)
{
}
然后我在.c文件中做了这样一个函数:
void PPM_Init(u16 arr,u16 psc)
{
void PPM_GPIO_Init(void);
void PPM_TIM_Init(u16 arr,u16 psc);
void PPM_NVIC_Init(void);
}
那么我在.h文件中是直接只定义void PPM_Init(u16 arr,u16 psc);就可以么?
不需要再把上面三个函数分别列出了吧?
然后再main.c中初始化的时候也只需要写
PPM_Init(899,0);
这样就可以了,对不对呢?

另外,还有一种情况,是比如说我需要在主函数里面单独引用上面三个函数中的其中一个,假设就是PPM_TIM_Init(u16 arr,u16 psc)那么我是不是就不应该在.c中定义PPM_Init()了?而是应该在main中分别写上
void PPM_GPIO_Init(void);
void PPM_TIM_Init(u16 arr,u16 psc);
void PPM_NVIC_Init(void);
??
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-3-31 19:12:50 | 显示全部楼层
回复【楼主位】馨馨泡沫:
---------------------------------
楼主自己试试,编译一下就知道了。。
另外:
void PM_Init(u16 arr,u16 psc)
{
void PM_GPIO_Init(void);
void PM_TIM_Init(u16 arr,u16 psc);
void PM_NVIC_Init(void);
}
这个函数,写的这么屌,你们c语言老师知道么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2013-8-20
在线时间
0 小时
发表于 2014-3-31 20:24:20 | 显示全部楼层
彻底跪了 真心牛  看看c语言的书吧!
只要路对?不怕路远
回复 支持 反对

使用道具 举报

13

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
375
金钱
375
注册时间
2013-12-12
在线时间
13 小时
发表于 2014-3-31 20:59:18 | 显示全部楼层
……
回复 支持 反对

使用道具 举报

77

主题

198

帖子

0

精华

高级会员

Rank: 4

积分
526
金钱
526
注册时间
2013-11-25
在线时间
0 小时
 楼主| 发表于 2014-3-31 21:08:17 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
回复【3楼】小布的梦:
---------------------------------

已经改正好了,没问题了,谢各位指导~




回复 支持 反对

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13083
金钱
13083
注册时间
2012-11-26
在线时间
3809 小时
发表于 2014-3-31 21:14:17 | 显示全部楼层
回复【5楼】馨馨泡沫:
---------------------------------
跪了   楼主先去学习怎么初始化GPIO  跟   设置中断分组吧
学无止境
回复 支持 反对

使用道具 举报

56

主题

1237

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2642
金钱
2642
注册时间
2014-2-13
在线时间
518 小时
发表于 2014-3-31 21:21:44 | 显示全部楼层
哈哈,原子哥真搞了这次,建议LZ看看C语言的书,不着急
技术交流,Sell 中颖单片机,欢迎私信骚扰
回复 支持 反对

使用道具 举报

77

主题

198

帖子

0

精华

高级会员

Rank: 4

积分
526
金钱
526
注册时间
2013-11-25
在线时间
0 小时
 楼主| 发表于 2014-3-31 21:21:55 | 显示全部楼层
回复【6楼】jermy_z:
---------------------------------
初始化和中断分组已经写好了。我不明白这个和我怎么定义void PM_Init(void)有关系么?
void PM_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); 
//????GPIO???è?±??

//PB8PM ×÷??TIM4_CH3?????????¨??
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//????????
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//I/O?±????50M
GPIO_Init(GPIOB,&GPIO_InitStructure);
}
void PM_NVIC_Init(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;

NVIC_InitStructure.NVIC_IRQChannel=TIM4_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//?è??NVIC_IRQChannel??????????????
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//?è??NVIC_IRQChannel????????????
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
我觉得我写的这个没有问题啊,不是我的问题所在吧??
回复 支持 反对

使用道具 举报

2

主题

34

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2013-7-19
在线时间
0 小时
发表于 2014-3-31 21:26:24 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
评论笑尿
ShawnLu
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-13 03:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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