参考海创电子的STM32视频。
1.头文件
头文件作为一种包含功能函数、数据接口声明的载体文件。
#include <stm32f10x.h> #include "stm32f10x.h"
<>:Keil自带的头文件,只要写上能自动去相应的文件夹加载!
“ ”:自定义的头文件,使用的时候一定要指明路径!
如:
#define PERIPH_BASE 0X4000 0000//总线基地址
#define ABP1PERIPH_BASE PERIPH_BASE
#define ABP2PERIPH_BASE (PERIPH_BASE+0x40010000)
#define AHBPERIPH_BASE (PERIPH_BASE+0x40020000)
#define GPIOC_BASE (ABP2PERIPH_BASE+0X00010000)
#define GPIOC_CRH *(unsigned int*)(GPIOC_BASE+0X04)
2.结构体

将上面图片用结构体表示:
typedef struct
{
uint32_t CRL;
uint32_t CRH;
uint32_t IDR;
uint32_t ODR;
uint32_t BSRR;
uint32_t BRR;
uint32_t LCKR;
}GPIO_TypeDef;//总名字,上面中括号里是他的“成员”
但结构体只有名字没有地址,需要和第一章结合起来。
(GPIO_TypeDef*)GPIOC_BASE//GPIOC_BASE表示0x4001 1000,加“*”将其转化为地址

引用结构体中的成员:
((GPIO_TypeDef*)GPIOC_BASE)->ODR;
//"->"是对结构体指针变量的引用
//由于((GPIO_TypeDef*)GPIOC_BASE)过于长,进行如下定义
#define GPIOC ((GPIO_TypeDef*)GPIOC_BASE)
GPIOC->ODR;
3.模块化
模块化编程是将大型程序分解为互相独立的小模块,每个模块负责特定的功能,以便更方便地阅读、维护和复用代码,主要分为源文件(*.c)和头文件(*.h)两部分。
源文件(*.c)
- 各个函数的具体形式
头文件(*.h)
- 各个函数的声明
- define函数的定义
- 结构体
输出高电

本文详细介绍了STM32中的头文件使用、GPIO控制的结构体定义、模块化编程以及GPIO_Init函数的工作原理,包括GPIO配置、输出模式和速度设置等。
最低0.47元/天 解锁文章
884





