STM32江科大学习笔记-制作中...
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); //指定引脚设置为低电平