初出茅庐的小李博客之C语言文件包含

头文件包含

头文件在C语言中是非常重要的组成部分。

  1. 系统级头文件和自定义头文件:

    • 是用于包含系统级头文件,这些头文件通常是C标准库或者其他系统提供的库的头文件,例如 stdio.hstring.hmath.h 等。

    • "xxx.h" 是用于包含自定义头文件,这些头文件通常是你自己或者团队编写的,用于组织和声明你的程序中的函数、变量、宏等。

  2. 预处理阶段的替换:

    在预处理阶段,#include 指令会将指定的头文件内容原样替换到包含它的源文件中。这样,在编译阶段时就可以知道函数的声明,使得调用函数时不会出现未声明的情况。

  3. 一个完整的C代码的组织:

    • xxx.c 源文件包含了函数的定义和调用,实现了具体的功能。
    • xxx.h 头文件包含了对应 xxx.c 中函数的声明,起到了接口的作用,使得其他文件在调用这些函数时能够正确地使用。
  4. 头文件保护(Include Guards):
    为了防止头文件被重复包含导致的重定义问题,通常在头文件的开头和结尾加入预处理指令,例如:

    #ifndef XXX_H
    #define XXX_H
    
    // 内容
    
    #endif // XXX_H
    

    这样可以确保头文件只被包含一次。

  5. 命名规范:
    通常头文件的命名使用全小写,可以包含下划线,以反映与源文件的关系。例如,如果有一个源文件 led.c,那么对应的头文件可能是 led.h

整体来说,头文件的正确使用有助于代码的模块化、可维护性和可读性。

单片机中led.c

#include "led.h"//私有库
#include "stdio.h"

//.c写函数的
//无参无返的函数
//函数名:  LED_Config //入口地址
//LED1->PC4 低电平点亮
//LED2->PC5 低电平点亮
//LED3->PC6 低电平点亮
//LED4->PC7 低电平点亮

void LED_Config(void)
{
	#if (REG_CODE)
	
	RCC->AHB1ENR |= 1<<2;      //GPIOC的时钟开关
  
	GPIOC->MODER &= ~(3<<2*4);//把89位清00 PC4
	GPIOC->MODER |=  (1<<2*4);//只是把第89位置01
	
	GPIOC->MODER &= ~(3<<2*5);//把10 11位清00 PC5
	GPIOC->MODER |=  (1<<2*5);//只是把第89位置01
	
	GPIOC->MODER &= ~(3<<2*6);//把11 12位清00 PC6
	GPIOC->MODER |=  (1<<2*6);//只是把第89位置01
	
	GPIOC->MODER &= ~(3<<2*7);//把89位清00  PC7
	GPIOC->MODER |=  (1<<2*7);//只是把第89位置01
	
	GPIOC->OTYPER &= ~(1<<4); //推挽模式//0xFFFF FFEF 
	GPIOC->OTYPER &= ~(1<<5);
	GPIOC->OTYPER &= ~(1<<6);
	GPIOC->OTYPER &= ~(1<<7);
	
	
	//假设输出状态 灯的开关
	GPIOC->ODR |=  (1<<4)| (1<<5)|(1<<6) |(1<<7);  //默认全关
	printf("寄存器代码...\r\n");
	#else
	printf("LED库函数代码...\r\n");
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
	
    GPIO_InitTypeDef  GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Mode   = GPIO_Mode_OUT;
	GPIO_InitStruct.GPIO_OType  = GPIO_OType_PP;
	GPIO_InitStruct.GPIO_Pin    = GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
	GPIO_InitStruct.GPIO_PuPd   = GPIO_PuPd_NOPULL;
	GPIO_InitStruct.GPIO_Speed  = GPIO_High_Speed;
	
	GPIO_Init(GPIOB,&GPIO_InitStruct);
	
	
	#endif
	
}

//开灯代码
void LED1_On(void)
{
	GPIOC->ODR &= ~(1<<4);
}
//关灯代码
void LED1_Off(void)
{
	GPIOC->ODR |= (1<<4);
}
//闪灯代码
void LED1_Tog(void)
{
	GPIOC->ODR ^= (1<<4);
}





单片机中led.h


#ifndef _LED_H_
#define _LED_H_

//.h 声明函数
#include "stm32f4xx.h"//公共的库

//函数指针:指向函数的指针变量 变量被赋的值就是LED_Config
void LED_Config(void);//
void LED1_On(void);
void LED1_Off(void);
void LED1_Tog(void);

#endif


至此,头文件包含相关内容就介绍完了

你可能感兴趣的:(STM32,C语言相关,开发语言,单片机,C语言)