• STM32F407 GPIO 库函数编程套路(led与beep总结) 个人笔记


    本文由正点原子STM32F407探索者开发板的led和beep实验,总结了gpio编程的套路。
    下文中以hardware 来称呼可能的硬件外设,如led或beep等。
    新建项目后主要用到三个文件:hardware.c ,hardware.h, main.c

    hardware.h

    #ifndef __HARDWARE_H
    #define __HARDWARE_H
    #include "sys.h"
    void HARDWARE_Init(void);
    #endif
    

    hardware.c

    #include "hardware.h" 
    
    //初始化该硬件外设与mcu相连的引脚为输出口		    
    
    void HARDWARE_Init(void)
    {   
      //0.定义结构体
      GPIO_InitTypeDef  GPIO_InitStructure;
      //1.使能与外设连接的端口的时钟(看原理图,可以知道哪些端口与所需外设相连,多个端口可以用或”|“)
      RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF时钟(以gpiof为例,实际要看那个端口与外设相连)
      
      //2.初始化外设对应引脚(以GPIOF8为例)
    
    /*(Pin, 几号引脚,看原理图
      Mode输入还是输出 ,
      OType推挽还是别的,
      Speed ,
      PuPd上拉还是下拉,即默认为高电平还是低电平 共五个)*/
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式
      GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
      GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;//下拉
      GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化GPIO
      //3.输出高低电平:	GPIO_ResetBits  or   GPIO_SetBits
      GPIO_ResetBits(GPIOF,GPIO_Pin_8);  //蜂鸣器对应引脚GPIOF8拉低, 
    }
    

    main.c

    调用HARDWARE_Init可以接着用GPIO_ResetBits和GPIO_SetBits 函数来输出高低电平。可以配合delay函数进行一些操作。例如:

    #include "sys.h"
    #include "delay.h"
    #include "usart.h"
    #include "led.h"
    #include "beep.h"
    
    
    int main(void)
    { 
     
    	delay_init(168);		   //初始化延时函数
    	LED_Init();				    //初始化LED端口
    	BEEP_Init();         	//初始化蜂鸣器端口
    	
    	while(1)
    	{ 
    		GPIO_ResetBits(GPIOF,GPIO_Pin_9); // DS0拉低,亮   等同LED0=0;
    		GPIO_ResetBits(GPIOF,GPIO_Pin_8); //BEEP引脚拉低, 等同BEEP=0;
    		delay_ms(300);                    //延时300ms
    		GPIO_SetBits(GPIOF,GPIO_Pin_9);   // DS0拉高,灭   等同LED0=1;
    		GPIO_SetBits(GPIOF,GPIO_Pin_8);   //BEEP引脚拉高, 等同BEEP=1;
    		delay_ms(300); 										//延时300ms
    	}
    }
    
  • 相关阅读:
    记录一次linux centos7被hack的填坑记录-20201015
    linux端口转发:分为本机端口转发和将本机端口转发到其他机器 这2种情况
    proxmox通过spice来连接
    PAT L3-015. 球队“食物链”
    蓝桥杯模拟一 封印之门
    蓝桥杯模拟一 数列求值
    第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 K 密码
    计蒜客 蓝桥杯模拟五 合并数字
    PAT L3-017. 森森快递
    PAT L1-046. 整除光棍
  • 原文地址:https://www.cnblogs.com/YuQiao0303/p/10011127.html
Copyright © 2020-2023  润新知