【学习记录】野火stm32学习记录(一)GPIO

观看的视频:野火-视频链接  https://www.bilibili.com/video/BV18X4y1M763

什么是GPIO?

        GPIO是通用输入输出端口的简称,简单来说就是STM32可控制的引脚。STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。

        可以通过控制GPIO引脚的电平变化,达到正常使用的目的。

寄存器编程 要学会使用STM32使用手册和数据手册。

STM32F103ZET6结构图:

F103GPIO的内部结构图:

TTL肖特基触发器:将连续的信号变为离散的信号。

LED灯原理图:

keil环境配置步骤:

1.新建一个工程,找到对应的开发版芯片。此次使用的是STM32F103ZET6。

2.配置keil setting 见图片

3.在Source Group 里面添加一个主程序,main.c文件。双击Source Group即可配置。

4.配置C语言运行环境。

5.编写一个main函数。

int main(void)

{



}

 点击编译无错误。

总线架构:总线矩阵协调内核系统总线和DMA主控总线之间的访问仲裁,仲裁利用轮换算法。

总线组织形式的优势:通过总线的形式,可以很好地将各种外设分离开,可以独立的将各种外设来控制它的使能与否。

时钟:通过控制时钟,来控制外设使能与否。没有外设时钟,就相当于失能。控制时钟就是控制外设。

软件开发步骤:

1. 根据此开发板的LED原理图了解到要控制PB5和PE5,使能GPIOB和GPIOE的外设时钟。使能外设时钟:知道寄存器的地址——APB2外设时钟使能寄存器地址。

RCC(复位和时钟控制)外设基地址:0x4002 1000

偏移地址:0x18

APB2外设时钟使能寄存器地址=起始地址+偏移地址。

2.选择输出模式,并查阅手册进行端口配置

LED需要设置的工作模式是输出模式。有开漏输出和推挽输出。对于开漏输出,输出一个高电平比较麻烦,选用推挽输出。

通过配置表头的寄存器可以配置推挽输出。

GPIOB外设基地址:0x4001 0C00

端口配置低寄存器(CRL)偏移地址:0x00

端口输出数据寄存器(ODR)偏移地址:0x0C

#define GPIOB_CLK (*(volatile unsigned int *)(0x40021000+0x18))
#define GPIOB_CRL (*(volatile unsigned int *)(0x40010C00))
#define GPIOB_ODC (*(volatile unsigned int *)(0x40010C00+0x0C))
int main(void)
{
	//1.使能GPIOB外设时钟
	GPIOB_CLK |=(1<<3);
	//2.GPIOB配置推挽输出模式
	GPIOB_CRL &=~(0xf<<(4*5));//清除低四位寄存器
	GPIOB_CRL |=(2<<(4*5));
	GPIOB_ODC &=~(0x1<<(1*5));//清除低1位寄存器
	GPIOB_ODC |=(1<<5);
	
}

通过注释GPIOB_ODC |=(1<<5);这行代码,可以使灯亮起。

圈2中选择自己的调试器。

STM32编程方式存在寄存器编程和库编程两种,寄存器编程存在以下缺点:1、代码可读性太差,如果是一大堆寄存器的编程代码,不写注释,很难读懂;2、二次开发难度大;3、每次写程序都要查手册。

当熟练运用后,可以将寄存器编程和库编程组合起来使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值