关于stm32c8t6 设置或读取IO口状态——想要分享的小白

本次博客主要参考正点原子战舰的例程。

在stm32中IO的使用并不像51的IO口可以直接对其进行操作。
他需要进行3个步骤,分别是:
1. 使能IO口的时钟
2. 初始化IO口的参数
3. 对IO口进行操作

下面通过正点原子的例程进行介绍:(以PB5为例)
1. 使能io口的时钟,即GPIOB 的时钟:
因为GPIO 是挂载在 APB2 总线上的外设, 在固件库中对挂载在 APB2 总线上的外设时钟使能是通过函数 RCC_APB2PeriphClockCmd()来实现的。
eg:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能PB端口时钟
2. 初始化IO口的参数
GPIO_InitTypeDef GPIO_InitStructure; //定义一个结构体变量GPIO_InitStructure
///********************初始化结构体变量 GPIO_InitStructure *********************************///
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //确定哪一个引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置为推挽输出模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //io口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //GPIOB.5 初始化函数
3. 对IO口进行操作
该部分分为输入和输出两块:
a. 输出部分:(有三个函数需要掌握)

  1. 通过位带操作来实现操作某个 IO 口的高低电平
    #define LED0 PBout(5) // PB5
    LED0=1; //通过位带操作控制 LED0 的引脚 PB5 输出高电平
    LED0=0; //通过位带操作控制 LED0 的引脚 PB5 输出低电平
  2. 通过库函数操作(主要通过GPIO_SetBits();GPIO_ResetBits ();设置io口高低电平
    GPIO_SetBits(GPIOB,GPIO_Pin_5); //设置io口PB5为高电平
    GPIO_ResetBits (GPIOB, GPIO_Pin_5); //设置io口PB5为低电平
  3. 通过寄存器操作
    GPIOB->BRR=GPIO_Pin_5; //设置 GPIOB.5 输出 1,等同 LED0=1;
    GPIOB->BSRR=GPIO_Pin_5; //设置 GPIOB.5 输出 0,等同 LED0=0;

b. 输入部分

  1. 通过位带操作来实现操作某个 IO 口的高低电平
    #define KEY0 PEin(4) //PE4
  2. 通过库函数操作(主要是通过GPIO_ReadInputDataBit()函数来读取io口的电平状态
    #define KEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值