STM32_基础入门(一)_库函数跑马灯实验

持续关注阿杰在线更新保姆式笔记~~坚持日更

寄存器跑马灯实验

目录

一、GPIO口工作模式

四个输出模式

四大输入模式 

对应库函数

二、相关寄存器

三、硬件连接

四、库函数——步骤

五、代码区


一、GPIO口工作模式

IO:数据输出  数据输入 (所有IO口都可以作为中断输入


通用:普通IO功能 单纯的IO做输出输入(通常:片外外设)

复用:除了IO以外的其他片上外设做数据交换 (通常:片上外设)

推挽:既能输出1也能输出0

      P-MOS管输出1 N-MOS管输出0

开漏:只能输出0、不能输出1 

      P-MOS管一直处于高阻态 N-MOS管输出0

  上拉电阻:空闲电平高  防止数据、电流倒灌 

  线与功能  通信协议 


片上外设:芯片以内、核心以外  IO TIM....

片外外设:芯片以外            LED BEEP KEY.....


四个输出模式

通用推挽输出 通用开漏输出 复用推挽输出 复用开漏输出 

四大输入模式 

上拉输入:具有上拉功能  空闲电平高

下拉输入:具有下拉功能  空闲电平低  

         增强IO的驱动能力  

浮空输入:按键 

模拟输入:输入的模拟量 


对应库函数

typedef enum

{ GPIO_Mode_AIN = 0x0,//模拟输入模式

  GPIO_Mode_IN_FLOATING = 0x04,//浮空输入模式

  GPIO_Mode_IPD = 0x28,//下拉输入模式

  GPIO_Mode_IPU = 0x48,//上拉输入模式

  GPIO_Mode_Out_OD = 0x14,//通用开漏输出模式

  GPIO_Mode_Out_PP = 0x10//通用推挽输出模式

  GPIO_Mode_AF_OD = 0x1C,//复用功能开漏输出模式

  GPIO_Mode_AF_PP = 0x18//复用推挽输出模式

}GPIOMode_TypeDef;


二、相关寄存器

STM32_基础入门(一)_库函数跑马灯实验_第1张图片

STM32_基础入门(一)_库函数跑马灯实验_第2张图片

三、硬件连接

STM32_基础入门(一)_库函数跑马灯实验_第3张图片

GPIO输出方式:  推挽输出

四、库函数——步骤

    1、使能IO口时钟。调用函数RCC_APB2PeriphColckCmd();----》rcc.h-693

             不同的IO组,调用的时钟使能函数不一样。

    2、 初始化IO口模式。调用函数GPIO_Init();----》gpio.h-351

    3、操作IO 口,输出高低电平。

     GPIO_SetBits();(高)----》gpio.h-357

     GPIO_ResetBits();(低)----》gpio.h-358

五、代码区

**main.c**

#include "stm32f10x.h"
#include "led.h"
#include "delay.h"

int main(void)
{	
	Led_Init();
	delay_init();
	
	while(1)
	{
		GPIO_SetBits(GPIOB,GPIO_Pin_5);//PB5输出高电平--》灭
		GPIO_SetBits(GPIOE,GPIO_Pin_5);//PE5输出高电平--》灭
		delay_ms(500);//延迟500ms
		
		GPIO_ResetBits(GPIOB,GPIO_Pin_5);//PB5输出低电平--》亮
		GPIO_ResetBits(GPIOE,GPIO_Pin_5);//PE5输出低电平--》亮
		delay_ms(500);		
	}
}
**led.c**

#include "led.h"
#include "stm32f10x.h"

void Led_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;//定义一个结构体变量
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
        //GPIOB 	使能PB,PE端口时钟 rcc.h-693
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
        //GPIOE 	使能PB,PE端口时钟
	
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出模式
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//LED0-->PB.5 端口配置
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//IO口速度为50MHz
	GPIO_Init(GPIOB,&GPIO_InitStructure); //根据设定参数初始化GPIOB.5	gpio.h-351
	GPIO_SetBits(GPIOB,GPIO_Pin_5);//PB5输出高电平	gpio.h-357
	
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//LED1-->PE.5 端口配置, 推挽输出
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//LED1-->PE.5 端口配置
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//IO口速度为50MHz
	GPIO_Init(GPIOE,&GPIO_InitStructure);//根据设定参数初始化GPIOE.5
	GPIO_SetBits(GPIOE,GPIO_Pin_5);//PE5输出高电平	gpio.h-358
}

你可能感兴趣的:(STM32,stm32,单片机,arm)