STM32江科大学习笔记

这篇博客详细介绍了STM32的GPIO操作,包括输出和输入流程,提供了具体的库函数使用示例。同时,通过实例讲解了如何用STM32控制按键、蜂鸣器、OLED屏幕、光敏传感器和舵机,是学习STM32单片机的良好参考资料。
摘要由CSDN通过智能技术生成

GPIO操作

其它的库函数

以下是GPIO其它函数
/**
  * @brief  初始化指定的端口引脚
  * @param  GPIOx:设置的外设,其中x可以是(A到G)
  * @param  GPIO_InitStruct: 此参数为 GPIO_InitTypeDef 结构体
  * @retval 无
  */
GPIO_Init(GPIOx,&GPIO_InitStructure); 
以上是GPIO其它函数

输出流程

输出的库函数

以下是GPIO输出函数
/**
  * @brief  设置引脚为低电平
  * @param  GPIOx:设置的外设,其中x可以是(A到G)
  * @param  GPIO_Pin_x:选择的端口引脚,其中x可以是(0到15)。
  * @retval 无
  */
GPIO_ResetBits(GPIOx,GPIO_Pin_x);

/**
  * @brief  设置引脚为高电平
  * @param  GPIOx:设置的外设,其中x可以是(A到G)
  * @param  GPIO_Pin_x:选择的端口引脚,其中x可以是(0到15)。
  * @retval 无
  */
GPIO_SetBits(GPIOx, uint16_t GPIO_Pin_x);

/**
  * @brief  设置引脚为高电平或低电平
  * @param  GPIOx:设置的外设,其中x可以是(A到G)
  * @param  GPIO_Pin_x:选择的端口引脚,其中x可以是(0到15)。
  * @param  BitVal: 赋予引脚的状态,Bit_RESET 为低电平 | Bit_SET 为高电平
  * @retval 无
  */
GPIO_WriteBit(GPIOx,GPIO_Pin_x, BitAction BitVal);

/**
  * @brief  同时对16个引脚进行写入操作
  * @param  GPIOx:设置的外设,其中x可以是(A到G)
  * @param  PortVal: 16进制端口数据寄存器的值,如:~0x0001 //也就是 0000 0000 0000 0001,C语言不支持2进制,需要转换成16进制,最低位对应PA0往上依次是PA1、PA2...因为是低电平点亮,最后按位取反
  * @retval 无
  */
GPIO_Write(GPIOx,PortVal);

/**
  * @brief  读取输出引脚的值
  * @param  GPIOx:设置的外设,其中x可以是(A到G)
  * @param  GPIO_Pin_x:选择的端口引脚,其中x可以是(0到15)。
  * @retval 如果输出引脚为高电平返回1,低电平返回0
  */
GPIO_ReadOutputDataBit(GPIOx,GPIO_Pin_x)
以上是GPIO输出函数

输出的例子

点亮一个LED灯

硬件部分:
将LED灯的正极插入A0引脚,负极插入GND,也就是输出高电平灯亮

代码部分如下:

#include "stm32f10x.h"                  // Device header

int main(void)
{
   
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //开启APB2总线上的GPIOA
	
	GPIO_InitTypeDef GPIO_InitStruct; //自定义一个名为GPIO_InitStruct结构体变量,它的类型是GPIO_InitTypeDef
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; //模式为推挽输出
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0; //引脚为GPIO_Pin_0
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //频率为GPIO_Speed_50MHz
	
	GPIO_Init(GPIOA,&GPIO_InitStruct); //对象选择GPIOA,然后将前面配置好的GPIO_InitStruct放进去,前面要加上取地址符&
	GPIO_SetBits(GPIOA,GPIO_Pin_0); //指定引脚设置为高电平
	//GPIO_ResetBits(GPIOA,GPIO_Pin_0);  //指定引脚设置为低电平		
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值