GPIO点灯

1.简介

GPIO是通用输入输出端口的简称,简单来说就是STM32可控的引脚。

基本输出功能是控制低电平和高电平,实现开关控制

基本输出功能是检测外部输出电平。

 

2.基本结构

硬件部分略过

2.1开漏输出

2.2推挽输出

最常使用

GPIO_MODE_OUT_PP = 0x10; //推挽

2.3输出数据寄存器

输出电平由输出数据寄存器GPIOx_ODR提供,可以通过修改寄存器的值从而改变输出电平。

置位复位寄存器GPIOx_BSRR也可以修改输出寄存器的值

2.4复用功能输出

2.5输入数据寄存器

模拟信号转化为数字信号,储存在输入寄存器GPIOx_IDR

2.6输入模式

GPIO_MODE_AIN = 0x0;  //模拟输入
GPIO_MODE_IN_FLOATING = 0x04; //浮空输入
GPIO_MODE_IPD = 0x28; //下拉输入
GPIO_MODE_IPU = 0x48; //上拉输入

 

 

3.使用寄存器点灯

3.1.硬件连接

Px口引出导线连接电阻和LED灯之后,和3.3V的电源项链

目标是把GPIO的引脚设置成推挽输出模式,默认下拉输出低电平

3.2.启动文件

startup_stm32f10x_md.s为汇编语言程序,最先被执行,建立起c语言运行环境。

3.3 stm32f10x.h文件

寄存器是给一个已经分配好地址的特殊内存空间取的别名,这个特殊的内存空间可以通过指针操作。

关于寄存器的映射的代码统一写在stm32f10x.h文件中。

/*片上外设基地址*/
#define PERIPH_BASH  ((unsigned int)0x40000000)

//总线基地址,GPIO都挂载到APB2上
#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)

//GPIO外设基地址
#define GPIOB_BASE   (APB2PERIPH_BASE + 0x0C00)

//GPIOA寄存器地址,强制转换成指针
#defin GPIOA_CRL        *(unsigned int*)(GPIOA_BASE+0x00)
#defin GPIOA_CRH        *(unsigned int*)(GPIOA_BASE+0x04)
#defin GPIOA_IDR         *(unsigned int*)(GPIOA_BASE+0x08)
#defin GPIOA_ODR        *(unsigned int*)(GPIOA_BASE+0x0C)
#defin GPIOA_BSRR       *(unsigned int*)(GPIOA_BASE+0x10)
#defin GPIOA_BRR         *(unsigned int*)(GPIOA_BASE+0x14)
#defin GPIOA_LCKR       *(unsigned int*)(GPIOA_BASE+0x18)

 

3.4 main文件

posted on 2022-03-14 08:42  MIXTAPE_208  阅读(98)  评论(0)    收藏  举报

导航