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

news/2025/2/8 14:48:24 标签: stm32, 单片机, arm

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

寄存器跑马灯实验

目录

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


http://www.niftyadmin.cn/n/644887.html

相关文章

埃氏筛法求素数

计算素数的一个方法是埃氏筛法,它的算法理解起来非常简单: 首先,列出从2开始的所有自然数,构造一个序列: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ... 取序列的第一个数2,它…

STM32_基础入门(一)_寄存器跑马灯实验

持续关注阿杰在线更新保姆式笔记~~坚持日更 库函数跑马灯实验 目录 一、硬件连接 二、寄存器步骤 三、代码区 一、硬件连接 GPIO输出方式: 推挽输出 二、寄存器步骤 使能IO口时钟。配置寄存器RCC_APB2ENR。 参考手册---》6.3.7 APB2 外设时钟使能寄存器(R…

STM32_基础入门(二)_库函数蜂鸣器实验

持续关注阿杰在线更新保姆式笔记~~坚持日更 目录 一、硬件连接 二、库函数——步骤 三、代码区 一、硬件连接 BEEP 0;--->不响 BEEP 1;--->响 二、库函数——步骤 使能IO口时钟。调用函数RCC_APB2PeriphColckCmd();不同的IO组&#xff0c…

《啊哈算法》纸牌游戏---小猫钓鱼

扑克游戏: 将一副扑克牌平均分成两份,每人拿一份。小哼先拿出手中的第一张扑克牌放在桌上,然后小哈也拿出手中的第一张放在桌上,就这样两人交替出牌。 出牌时,若某人打出的牌与桌面上的某张牌面相同,即将两…

SAP物联网/工业4.0亮相工博会 展示未来供应链数字化趋势

11月1日,第十八届中国国际工业博览会(China International Industry Fair)盛大开幕,SAP携新一代“物联网/工业4.0智能制造解决方案”及“智能互联物流解决方案”两大重量级解决方案亮相工博会信息与通信技术应用展(ICT…

牛客网《剑指Offer》(1)二维数组的查找

题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该…

sqlserver 数据库日志收缩失败解决办法

1、数据库-收缩-日志-可以收缩百分之90多,但是收缩完,容量并没有减少。查资料有可能日志是被占用了,暂时无法收缩;2、select log_reuse_wait_desc from sys.databases where name HIS_CDC 查询出来是replication&#xf…

华为的“敏捷”将让物联网跨越理想与现实的鸿沟

25年前,一台可以联网的可乐售贩机拉开了物联网应用的大幕。25年后,能够联网的食品售贩机已遍布地铁、写字楼。然而,人们探索了25年的物联网,却没能让售贩机的应用和过去迥然不同。 在这25年里,人们满怀对物联世界的种种…