一、代码 GPIO 输入输出位操作
// 单独操作 GPIO 的某一个 IO 口,n(0,1,2...16),n 表示具体是哪一个 IO 口
#define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n) //输出
#define PAin(n) BIT_ADDR(GPIOA_IDR_Addr,n) //输入
#define PBout(n) BIT_ADDR(GPIOB_ODR_Addr,n) //输出
#define PBin(n) BIT_ADDR(GPIOB_IDR_Addr,n) //输入
#define PCout(n) BIT_ADDR(GPIOC_ODR_Addr,n) //输出
#define PCin(n) BIT_ADDR(GPIOC_IDR_Addr,n) //输入
#define PDout(n) BIT_ADDR(GPIOD_ODR_Addr,n) //输出
#define PDin(n) BIT_ADDR(GPIOD_IDR_Addr,n) //输入
#define PEout(n) BIT_ADDR(GPIOE_ODR_Addr,n) //输出
#define PEin(n) BIT_ADDR(GPIOE_IDR_Addr,n) //输入
#define PFout(n) BIT_ADDR(GPIOF_ODR_Addr,n) //输出
#define PFin(n) BIT_ADDR(GPIOF_IDR_Addr,n) //输入
#define PGout(n) BIT_ADDR(GPIOG_ODR_Addr,n) //输出
#define PGin(n) BIT_ADDR(GPIOG_IDR_Addr,n) //输入
二、固件库点灯—电平输出高低
LED-库函数 操作移植过来,有关 LED GPIO 初始化和软件延时等
函数我们直接用,修改的是控制 GPIO 输出的部分改成了位操作。该实验我们让 IO 口输出
高低电平来控制 LED 的亮灭,负逻辑点亮。
main 函数
int main(void)
{
// 程序来到 main 函数之前,启动文件:statup_stm32f10x_hd.s 已经调用
// SystemInit()函数把系统时钟初始化成 72MHZ
// SystemInit()在 system_stm32f10x.c 中定义
// 如果想修改系统时钟,可自行编写程序修改
LED_GPIO_Config(); //初始化GPIO口
while ( 1 )
{
// PB0 = 0,点亮 LED
PBout(0)= 0;
SOFT_Delay(0x0FFFFF);//延迟
// PB1 = 1,熄灭 LED
PBout(0)= 1;
SOFT_Delay(0x0FFFFF);//延迟
}
}