• STM32 LED编程 GPIO的初始化(标准库)


    实验的电路图介绍
    在这里插入图片描述
    实验的电路图类似于开漏接法 要初始化GPIOC接口
    标准库的模板
    在这里插入图片描述
    GPIO的标准库编程接口
    在这里插入图片描述
    GPIO引脚的初始化
    在这里插入图片描述
    GPIO作为片上外设 每一个片上外设使用前一定要使能时钟 为什么要使能时钟?时钟是啥

    时钟的使能

    在这里插入图片描述
    stm32的每一个片上外设都是时序电路 时序电路在使用前都要进行时钟使能 通过调用图片中圈起来的函数进行时钟初始化 第一个参数为初始化的GPIO口 绿色的字 如要初始化GPIOC第一个参数就输入RCC_APB2Periph 第二个参数就输出 ENABLE即可完成时钟的初始化 开启gpioc的时钟

    GPIO_Init的初始化

    在这里插入图片描述
    第一个参数写你要初始化端口 以GPIOC P13为例子 第一个参数就写GPIOC
    第二个参数是一个结构体指针(第一个也是)就像填表一样 把每一行填入值就可以初始化这个io引脚 第一个是引脚号 为13 第二个为模式输出开漏 上面有说为什么是开漏模式
    第三个是gpio的速度 led对速度的要求不高 这里就低速即可
    在这里插入图片描述
    第一步在主函数声明一个初始化GPIO的结构体 然后再填表一样把每个结构体的值填入
    引脚为GPIOC P13 输出开漏模式 速度为2MHZ 再调用GPIO初始化函数 传入GPIOC和刚刚定义的结构体变量的地址 GPIOInitstruct
    如果一个新手不知道结构体内填入什么值 打开文件 gpio.h的文件 滑倒函数的底部找到初始化函数Init 在main中敲入函数发现函数需要两个参数

    在这里插入图片描述
    分别输入第一个参数在这里插入图片描述
    发现第二个参数是一个结构体 回到gpio.h 把结构体的名称给复制下来
    在这里插入图片描述
    然后声明一个结构体 名字就是你刚才复制的那个 然后给这个结构体填值 那到底填什么值呢? 注意要先编译一遍!!!!
    在这里插入图片描述
    找到这个结构体在这里插入图片描述
    在这里插入图片描述

    找到这个结构体成员可填的值 选中这个值 按住ctri+f 查找这个值
    在这里插入图片描述
    圈起来的就是可以填入的值 其他的MODE 和Speed都是如此可找到填入值
    在这里插入图片描述
    在这里插入图片描述

    ODR的写入和读取

    #include "stm32f10x.h"
    #include "stm32f10x_pal.h"
    
    int main(void)
    {
    	GPIO_InitTypeDef GPIOInitstruct;
    	
    	PAL_Init();
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
    	
    	GPIOInitstruct.GPIO_Pin = GPIO_Pin_13;
    	GPIOInitstruct.GPIO_Mode = GPIO_Mode_Out_OD;
    	GPIOInitstruct.GPIO_Speed = GPIO_Speed_2MHz;
    	GPIO_Init(GPIOC,&GPIOInitstruct);
    		GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);//Bit_SET 1 熄灭
    	GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET);//Bit_RESET 0 灯亮起
    	while(1)
    	{
    	}
    } 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    在这里插入图片描述

    IDR的写入和读取

    在这里插入图片描述

    IO的翻转

    在这里插入图片描述
    标准库没有延时函数的接口 得调用PAL库

    #include "stm32f10x.h"
    #include "stm32f10x_pal.h"
    
    int main(void)
    {
    	GPIO_InitTypeDef GPIOInitstruct;
    	
    	PAL_Init();
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
    	
    	GPIOInitstruct.GPIO_Pin = GPIO_Pin_13;
    	GPIOInitstruct.GPIO_Mode = GPIO_Mode_Out_OD;
    	GPIOInitstruct.GPIO_Speed = GPIO_Speed_2MHz;
    	GPIO_Init(GPIOC,&GPIOInitstruct);
    	while(1)
    	{
    		
    		GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);//Bit_SET 1 熄灭
    		PAL_Delay(500);
    		GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET);//Bit_RESET 0 灯亮起
    		PAL_Delay(500);
    		//让灯延时闪烁
    	}
    } 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    翻转
    在这里插入图片描述

    #include "stm32f10x.h"
    #include "stm32f10x_pal.h"
    
    int main(void)
    {
    	GPIO_InitTypeDef GPIOInitstruct;
    	
    	PAL_Init();
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
    	
    	GPIOInitstruct.GPIO_Pin = GPIO_Pin_13;
    	GPIOInitstruct.GPIO_Mode = GPIO_Mode_Out_OD;
    	GPIOInitstruct.GPIO_Speed = GPIO_Speed_2MHz;
    	GPIO_Init(GPIOC,&GPIOInitstruct);
    	GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET);//先让这个led点亮
    	while(1)
    	{
    		PAL_Delay(100);
    		if(GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_13)==Bit_RESET)
    		{
    			GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET);
    			
    		}
    		else
    		{
    		
    		GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET);
    		
    		}
    		
    		
    	}
    } 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
  • 相关阅读:
    【漏洞复现】typecho_v1.0-14.10.10_unserialize
    ad5665r STM32 GD32 IIC驱动设计
    给cmd控制台程序 套壳 美化
    Go-Excelize API源码阅读(十五)——SetSheetViewOptions
    LabVIEW数据采集-数字I/O/计数器
    万宾科技智能井盖传感器特点介绍
    光热发电的能量汇聚111
    基于Caltech101数据集的图像分类问题
    iMeta文献观点:16s全长-功能预测更具优势
    谈谈我的「数字文具盒」 - 数字基建
  • 原文地址:https://blog.csdn.net/qq_74185687/article/details/134317571