diff --git a/Demo1/GPIO.md b/Demo1/GPIO.md new file mode 100644 index 0000000..c547485 --- /dev/null +++ b/Demo1/GPIO.md @@ -0,0 +1,12 @@ +引脚带FT的可以容忍5V,不带的只能接入3.3V + +输入模式: + GPIO_Mode_AIN 模拟输入 + GPIO_Mode_IN_FLOATING 浮空输入 + GPIO_Mode_IPD 下拉输入 + GPIO_Mode_IPU 上拉输入 +输出模式: + GPIO_Mode_Out_OD 开漏输出 + GPIO_Mode_Out_PP 推挽输出 + GPIO_Mode_AF_OD 复用开漏 + GPIO_Mode_AF_PP 复用推挽 \ No newline at end of file diff --git a/Demo1/demo.md b/Demo1/demo.md new file mode 100644 index 0000000..4222e0e --- /dev/null +++ b/Demo1/demo.md @@ -0,0 +1,34 @@ +C语言中,.h文件(头文件)主要用于声明接口(如函数原型、宏、类型定义等),而.c文件(源文件)用于实现这些接口的具体功能并包含程序的入口函数main()。 +.h文件(头文件)的作用 +- 声明接口内容:包含函数原型、宏定义、类型定义(如结构体)、全局变量声明(使用`extern`)等,为其他文件提供调用依据。例如: + ```c + // math_utils.h + #ifndef MATH_UTILS_H + #define MATH_UTILS_H + int add(int a, int b); // 函数声明 + #define MAX 100 // 宏定义 + extern int global_var; // 全局变量声明 + #endif + ``` +- 防止重复包含:通过条件编译指令(如`#ifndef`/`#define`/`#endif`)或`#pragma once`避免编译错误。 +- 模块化设计:提供清晰的接口规范,隐藏实现细节,便于多人协作和库文件分发。 +.c文件(源文件)的作用 +- 实现功能代码:包含函数的具体逻辑、全局变量的定义(分配内存)和程序入口`main()`。例如: + ```c + // math_utils.c + #include "math_utils.h" // 包含对应头文件 + int add(int a, int b) { // 函数实现 + return a + b; + } + int global_var = 10; // 全局变量定义 + ``` +- 独立编译单元:每个.c文件被编译成目标文件(.o),再由链接器合并为可执行文件。 +- 管理内部细节:可定义静态变量或函数(使用`static`),限制作用域为当前文件,避免命名冲突。 +核心关系与工作流程 +- 分离编译优势:头文件定义接口,源文件实现功能,提升代码可读性、可维护性和编译效率。 +- 预处理过程:编译时,`#include`指令将头文件内容插入源文件,形成完整代码再编译。 +- 链接机制:链接器将多个目标文件(.o)的符号引用(如函数调用)解析并绑定到具体定义,生成最终程序。 +> 示例流程: +> 1. 头文件`math_utils.h`声明`int add(int a, int b);`。 +> 2. 源文件`math_utils.c`实现该函数并包含头文件。 +> 3. 主程序`main.c`通过`#include "math_utils.h"`调用`add()`,编译后链接所有目标文件执行。 diff --git a/demo.md b/demo.md deleted file mode 100644 index e69de29..0000000