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;


二、相关寄存器

三、硬件连接

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
}

版权声明:本文为CSDN博主「阿杰在线送代码」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_50546241/article/details/122671104

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

寄存器跑马灯实验

目录

一、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;


二、相关寄存器

三、硬件连接

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
}

版权声明:本文为CSDN博主「阿杰在线送代码」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_50546241/article/details/122671104

生成海报
点赞 0

阿杰在线送代码

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

笔记3:STM32F103与STM32F030的区别

在替换芯片时,发现STM32f103与STM32F030的区别: 内部结构 下图是103的IO口内部结构: 下图是030的IO口内部结构图: 通过上面的比较可以看出: 两个

2、STM32点亮LED灯

一、寄存器操作 1、新建工程,新建一个目录存放以后所有的工程stmproject,在这个目录下新建文件夹寄存器点灯,文件名为LED。 接下来选择所用的软件包,之前安装软件时安装的&#xff

【零基础学STM32】CubeMx+HAL配置按键点灯实验

主要内容 上一篇文章中采用了EXTI中断的方式控制小灯的亮灭。其实也可以不采用中断,直接使用GPIO配置即可实现按键对应小灯的状态,且效果几乎相同。同样本次例程试验采用正点原子阿波罗STM32F429IGT6开发板

STM32 HAL库学习笔记-(SPI驱动ADXL345)

STM32 HAL库学习笔记-(SPI驱动ADXL345) 最近有项目需要需要用到ADXL345,网上转了一圈都是IIC驱动为主,正好最近在学习HAL库,所以本文将使用SPI驱动ADXL345 CU