您的位置:首页 > 博客中心 > 互联网 >

STM32基础

时间:2022-05-07 23:07

技术图片
GPIOA
GPIOB
GPIOC
GPIOD
GPIOE
GPIOF
GPIOG
可选参数

 

第二个参数为一个结构体,三个变量成员

技术图片

GPIO_Pin

技术图片技术图片
GPIO_Pin_0
GPIO_Pin_1
GPIO_Pin_2
GPIO_Pin_3
GPIO_Pin_4
GPIO_Pin_5
GPIO_Pin_6
GPIO_Pin_7
GPIO_Pin_8
GPIO_Pin_9
GPIO_Pin_10
GPIO_Pin_11
GPIO_Pin_12
GPIO_Pin_13
GPIO_Pin_14
GPIO_Pin_15
可选参数

GPIO_Speed

技术图片技术图片
GPIO_Speed_10MHz = 1,
GPIO_Speed_2MHz, 
GPIO_Speed_50MHz
可选参数

GPIO_Mode

技术图片技术图片
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//复用推挽
可选参数

 

 示例

技术图片

 

 

读取输入电平函数

作用:读取某个GPIO的输入电平

实际操作的是GPIOx_IDR寄存器

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); 

示例

技术图片

 

 

作用:读取某组GPIO的输入电平

实际操作的是GPIOx_IDR寄存器

uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx); 

示例

 技术图片

 

 

 

读取输出电平函数

作用:读取某个GPIO的输出电平

实际操作的是GPIO_ODR寄存器

uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

示例 

技术图片

 

作用:读取某组GPIO的输出电平

实际操作的是GPIO_ODR寄存器

uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);

示例

技术图片

 

 

设置输出电平函数

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);

技术图片

跑马灯实验

led.h

技术图片技术图片
#ifndef __LED_H
#define __LED_H
void LED_Init(void);
   
#endif
代码

led.c

技术图片技术图片
#include "led.h"
#include "stm32f10x.h"
//在任何地方都要引用头文件stm32f10x.h,使用固件库必须要用到的头文件
void LED_Init(void){
    GPIO_InitTypeDef GPIO_InitStruct;//
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能gpioB的时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//使能gpioA的时钟
    
    
    //初始化gpio
    GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
    GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5;
    GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOB,&GPIO_InitStruct);//&取地址
    GPIO_SetBits(GPIOB,GPIO_Pin_5);//设置io输出低电平
    
    //初始化gpio
    GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
    GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5;
    GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOE,&GPIO_InitStruct);//&取地址
    GPIO_SetBits(GPIOE,GPIO_Pin_5);//设置io口输出低电平
    
}
代码

main.c

技术图片技术图片
#include "stm32f10x.h"
#include "led.h"
#include "delay.h"

int main(void){

//初始延时
delay_init();
LED_Init();
    
    while(1)
    {
    GPIO_SetBits(GPIOB,GPIO_Pin_5);
    GPIO_SetBits(GPIOE,GPIO_Pin_5);
    delay_ms(500);
        
    GPIO_ResetBits(GPIOB,GPIO_Pin_5);
    GPIO_ResetBits(GPIOE,GPIO_Pin_5);
    delay_ms(500);
    }

}
代码

 

  

本类排行

今日推荐

热门手游