寄存器结构体定义
寄存器地址之间相距4个字节
以GPIOB为例
可以找出GPIOB_BASE的地址为基地址开始定义
Ps:typedef unsigned int 定义一个整形类型
编写端口置位复位函数
以设置ODR寄存器的置位复位为例
创建文件
头文件防止重复调用
在main.c中调用以下头文件
在stm32f10x_gpio.h中也调用了一次stm32f10x.h
故在stm32f10x.h中也要设置防止重复调用代码
Ps:养成习惯在头文件中写防止重复调用代码,以下代码成对出现
例如
#ifndef _STM32F10X_H
#define _STM32F10X_H
……
#endif /* _STM32F10X_H */
GPIO口置位
Step1 在stm32f10x_gpio.c中创建一个函数
函数第一个参数,指定哪一个端口
函数第二个参数,每个端口有16个IO口
置位操作BSRR寄存器的低16位
(BSRR为高电平有效)
Step2 在stm32f10x_gpio.h中定义宏(GPIO引脚号定义)
Step3 在main.c主函数中调用函数
GPIO口复位
同理:
Step1
使用BRR端口清除寄存器(高电平有效,将对应的位清除为0)
Step2 同BSRR高电平有效,故使用同样的引脚定义
Step3
逻辑现象为先不亮后亮
编写GPIO初始化结构体和初始化函数
在stm32f10x_gpio.h中创建GPIO初始化结构体
GPIO初始化结构体包含了引脚号、工作模式、输出速率
GPIO枚举类型定义
工作模式枚举定义中对应的值如下所示
创建GPIO初始化函数
……(略)
在stm32f10x_gpio.h中调用以上函数GPIO_Init
在main.c中
提高程序的可移植性
Finish~