赞
踩
前言:记录将以点亮led灯为例,编写一个库函数
1.在USER文件夹中新建一个文件夹,命名为编写库函数的名字。(该文件夹用于存放自己编写库函数的头文件和源文件),如图:
2.在新建的文件夹中新建关于库函数的头文件和源文件(示例中新建的是led.c和led.h)
( 1 )打开工程,点击品字符,选中USER文件夹,点击Add Files...,依照刚刚新建好的库函数文件夹的路径,找到新建的源文件(led.c),选中并点击Add添加。流程如图:
添加成功后:
( 2 )进行程序编写,使相应的头文件(led.h)自动导入。打开添加的源文件(led.c),编写下面一段程序:
#include "led.h" //注意:引用的头文件名称为自己新建的库函数头文件名称
编写好后点击全局编译图标,编译完成后我们会发现在源文件(led.c)右方出现 '+' ,点击 '+' 后发现,新建好的头文件(led.h)已经载入了。流程如图:
( 1 )在头文件(led.h)中添加条件编译语句
- #ifndef __LED_H__
- #define __LED_h__
-
- #define "stm32f10x.h"
-
- #endif
( 2 )在头文件中编写宏定义和函数声明语句等,在源文件中编写函数具体的形式。(可以理解为,头文件负责大体框架,源文件负责细节完善)
在源文件(led.c)中编写led灯初始化函数,点亮led灯函数,熄灭led灯函数,同时将编写好的函数声明到头文件(led.h)中。为了引脚参数便于修改,我们还可以将引脚参数写为宏定义加入到头文件中,以便于函数参数的修改。(其实在源文件中编写函数时可以直接将对应时钟和引脚作为参数进行整理编写,在调用函数直接填入时钟和引脚作为参数进行使用,但由于博主能力有限,只能先采用着这种方法)。
此时的源文件(led.c)为:
- #include "led.h"
-
- void LED_Config(void)//LED初始化函数
- {
- GPIO_InitTypeDef GPIO_InitStruct;//引脚结构体的定义
-
- RCC_APB2PeriphClockCmd(LED_CLK,ENABLE);//配置时钟:开启GPOIOC时钟
-
- GPIO_InitStruct.GPIO_Pin = LED_Pin;//配置引脚:选中13号引脚
- GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;//配置引脚:确定引脚的工作模式
- GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;//配置引脚:确定引脚的速度
-
- GPIO_Init(GPIOC,&GPIO_InitStruct);//将相关数据写入寄存器,完成GPIOC组13号引脚的初始化
-
- }
-
- void LED_High(void)//LED点亮函数
- {
- GPIO_SetBits(LED_Port,LED_Pin);
- }
-
- void LED_Low(void)//LED熄灭函数
- {
- GPIO_ResetBits(LED_Port,LED_Pin);
- }
此时的头文件为(led.h):
- #ifndef __LED_H__
- #define __LED_H__
-
- #include "stm32f10x.h"
-
- /*将引脚、引脚组、对应时钟参数写为宏定义*/
- #define LED_Pin GPIO_Pin_13
- #define LED_Port GPIOC
- #define LED_CLK RCC_APB2Periph_GPIOC
-
- /*LED初始化函数声明*/
- void LED_Config(void);//LED初始化函数声明
- void LED_High(void);//LED点亮函数声明
- void LED_Low(void);//LED熄灭函数声明
-
- #endif
( 3 )添加头文件(led.h)的路径:点击魔术棒,弹窗后选择C/C++,点击Include Paths后面的'...',按路径寻找编写好的库函数文件夹,点击选择文件夹,点击OK。流程如图:
在使用自己编写的库点亮led时,一定要在最开始导入头文件(led.h)
#include "led.h"
编写主体代码main.c:
- #include "stm32f10x.h"
- #include "led.h"
-
- int main(void)
- {
- void LED_Config();//LED初始化
-
- while(1)
- {
- void LED_Low();//LED相关引脚设置为低电平
- }
- }
如图:
编写自己库完成:在编写时我们要注意以下重点
1.新建文件夹用于存放编写库函数的头文件和源文件。
2.头文件一定要先写入编译条件,头文件主要用于存放函数声明及函数相关参数的宏定义等。
3.源文件主要用于存放函数的具体内容。
4.在main.c文件中调用编写好的库函数文件时,一定要用先导入对应库函数的头文件(#include "led.h")
作者声明:文章原创不易,转载引用请声明出处。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。