STM32F103-入门基础实验-GPIO输出控制LED核心代码(寄存器版)

首先对于STM32的入门来说,我推荐大家去看野火,和正点原子的教学视频,没学过51的和基础比较差的同学先从野火的教学视频看,底子好的同学看正点原子的教学视频。
基础扎不扎实是相对于,你是否理解处理器的基本架构,内存映射,寄存器映射,底层外设的基本知识,比如:GPIO、串口、DMA、定时器…等等。他们很多的教学资产都是免费获取的,对于刚开始学习的小伙伴可是太友好了~
如果有同学找不到资源,可以在博客下方评论留言,我在第一时间为你充当学习的传送门哦~

进入今天的主题-寄存器版-操作GPIO的输出-控制LED灯

1、GPIO简介
GPIO(General Purpose Input Output,通用输入输出接口)是MCU与外部电路和设备连接的基本外设。也就是常说的端口或管脚。
STM32F103的GPIO的特点如下:
复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模式。
所有GPIO引脚有一个内部弱上拉和弱下拉,当配置为输入时,它们可以被激活也可以被断开。
可以以推挽模式或开漏模式使用输出驱动器。
当作为输出配置时,写到输出数据寄存器上的值(GPIOx_ODR)输出到相应的I/O引脚。
输入数据寄存器(GPIOx_IDR)在每个APB2时钟周期捕捉I/O引脚上的数据。
每个GPIO都可以作为外部中断/唤醒线。
复用功能:使用默认复用功能前必须对端口位配置寄存器编程。
软件重新映射I/O复用功能。
GPIO锁定机制。
STM32F103有GPIOA、GPIOB、GPIOC、GPIOD和GPIOE五个16位通用接口,每个GPIO 端口有16个口线对应16个管脚。
GPIO端口的每个位可以根据不同的功能,由软件分别配置成八种模式:
输入浮空:用于不确定高低电平的输入。
输入上拉:用于默认为上拉至高电平的输入。
输入下拉:用于默认为下拉至低电平的输入。
模拟输入:用于模拟量的输入。
开漏输出:用于实现电平转换和线与功能的输出。
推挽式输出:用于较大功率驱动的输出。
推挽式复用功能:复用功能情况下的推挽输出。
开漏复用功能:复用功能情况下的开漏输出。

GPIO输出初始化顺序
1、开LED相关的GPIO端口时钟
2、选定具体的GPIO
3、配置GPIO工作模式(CRL和CRH寄存器)
4、控制GPIO输出高低电平(ODR、BRR和BSRR)
int main(void)
{	
	// 开启GPIOB 端口时钟
	RCC_APB2ENR |= (1<<3);

	//清空控制PB0的端口位
	GPIOB_CRL &= ~( 0x0F<< (4*0));	
	// 配置PB0为通用推挽输出,速度为10M
	GPIOB_CRL |= (1<<4*0);

	// PB0 输出 低电平
	GPIOB_ODR &= ~(1<<0);
	
	while(1);
}

如果大家觉得实验中一些寄存器的配置不是很明白,大家就拿出咱们吃饭的家伙数据手册来把实验中出现的寄存器在手册中查找,去理解。

啃骨头,要好好啃,使劲啃,啃到底,才能啃到精髓嘛~~

欢迎大家的留言和评论我会在看到的第一时间内答复。

看完后感觉得到帮助的小伙伴,要点点赞哦~
给笔者一些动力嘛!谢谢啦~

你可能感兴趣的:(STM32F103-入门基础实验-GPIO输出控制LED核心代码(寄存器版))