前言
本文的主要内容:关于STM32F030C8T6芯片的GPIO输入的初始化配置代码学习,以按键为例
一、标准库代码
void KEY_GPIO_Config(void)
{
//定义一个GPIO_InitTypeDef 类型的结构体
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB,ENABLE);//开启GPIOC的外设时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;//选择要用的GPIO引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; //引脚输入模式
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //设置引脚模式为上拉输入模式
GPIO_Init(RCC_AHBPeriph_GPIOB, &GPIO_InitStructure); //调用库函数,初始化GPIO
}
前面有讲过如何查找这些参数的定义,本节内容较为简单,详细过程可以查看https://blog.csdn.net/weixin_49178419/article/details/143103603?spm=1001.2014.3001.5502
二、“.c” “.h” 文件的使用
在Keil编程环境中,.c
和 .h
文件是项目工程中最常用的的两种文件类型。
1 “.c”文件:
1.是什么:.c
文件是C语言源代码文件,包含我们编写的实际的程序代码,即程序执行的逻辑和功能实现部分。
2.我们怎么用:我们可以在.c
文件中编写函数,包括变量声明、函数定义、逻辑控制语句等,最终完成逻辑和功能的具体实现。
3.为什么这么用:单片机在编译过程中,.c
文件会被编译器编译成目标代码(通常是汇编代码),然后链接生成最终的可执行文件。
2 “.h”文件
1.是什么:.h
文件是头文件,用于声明函数、结构、宏等的原型和定义。它们通常不包含具体的实现代码,而是作为源代码文件(.c
文件)的接口声明。头文件可以在多个源文件中被包含(include),以实现代码的复用和模块化。
2.我们怎么用
声明接口:在.h
文件中声明函数原型、全局变量、宏定义和数据类型等。这些声明使得其他源文件能够了解如何使用这些接口,而不需要知道它们的具体实现细节。
包含头文件:在.c
文件中使用#include
指令来包含.h
文件,这样.c
文件就可以访问.h
文件中声明的函数和变量了。例如:
#include "example.h"
防止重复包含:使用预处理指令#ifndef
、#define
和#endif
来防止头文件被多次包含,这被称为“include guards”。例如:
#ifndef EXAMPLE_H
#define EXAMPLE_H
// 头文件内容...
#endif // EXAMPLE_H
添加头文件路径:在Keil项目中,需要设置包含头文件的路径,以便编译器能够找到这些头文件。这可以通过项目设置中的“C/C++”选项卡下的“Include Paths”来完成。
3. 为什么这么用
代码复用:通过在不同的.c
文件中包含同一个头文件,可以复用头文件中声明的接口,避免代码重复。
实现代码模块化:头文件帮助实现代码的模块化。每个模块可以有自己的头文件,用于声明其提供的接口,而实现细节则被封装在对应的源文件中。
依赖管理:头文件中包含的声明可以表达模块之间的依赖关系,一个.c
文件通过包含相应的头文件来使用其他模块提供的功能。
减少错误:使用头文件可以减少由于重复定义或声明导致的错误,提高代码的可维护性。
提高可读性和可维护性:头文件中的注释通常用来说明接口的用途、参数和返回值等,起到文档的作用,帮助开发者理解如何使用这些接口。
总结
以上就是今天要讲的内容,本文仅仅简单介绍标准库引脚输出的初始化定义和工程文件中的.C.H文件,大家有其他想要补充或者更好的内容可以在评论区留言。