stm32之GPIO配置及库函数学习笔记——以流水灯为例

发布者:SereneSerenity最新更新时间:2019-09-25 来源: eefocus关键字:stm32  GPIO配置  库函数  流水灯 手机看文章 扫描二维码
随时随地手机看文章

1.GPIO全称:gpio general-purpose input/output 通用输入/输出端口


2.GPIO寄存器中文名称与英文缩写对照表 

图1

3.GPIO_InitTypeDef结构体定义


typedef struct

{

  uint16_t GPIO_Pin;//选择待设置的GPIO引脚        

  GPIOSpeed_TypeDef GPIO_Speed;//设置选中管脚的速率

  GPIOMode_TypeDef GPIO_Mode;//设置选中管脚的工作状态(模式)   

}GPIO_InitTypeDef;


4.GPIO_Mode:端口的每个位可以分别配置成多种模式,中文名称与英文缩写对照表如下: 

图2

5.复位期间和刚复位后,复用功能未开启,I/O 端口被配置成浮空输入模式。 

LED硬件连接如下图所示:高电平点亮LED。 

图3

6.接下来就是正式内容了 

第一步:配置系统时钟。另外,将GPIO外设时钟打开。


    /* Enable GPIOC clock */

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);


第二步:配置中断向量表。决定将程序下载到RAM中还是FLASH中。


void NVIC_Configuration(void)

{

    //设置NVIC中断分组2:2位抢占优先级,2位响应优先级

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); 

}


第三步:配置GPIO的模式。输入模式还是输出模式。重点。


void GPIO_Configuration(void)

    {

      GPIO_InitTypeDef GPIO_InitStructure;


      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;

      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 


      GPIO_Init(GPIOC, &GPIO_InitStructure);

    }


由上面代码可见,使用GPIO十分简单,只需填写GPIO_InitTypeDef结构体的成员变量。 

然后,调用GPIO_Init函数,GPIO的模式就配置好了。 

当然,对于使用者来说,GPIO_Init函数相当于黑箱,不知道其内部运作机制,执行完步骤三就可以向该管脚写1还是写0了。


第四步:向指定Port指定Pin,写1还是写0。上述原理图中LED都是高电平点亮。利用两个库函数。 

GPIO_SetBits() ; //向指定Port指定Pin写1 

GPIO_ResetBits() ; //向指定Port指定Pin写0


经过上面4步,就可以成功驱动LED流水灯。


7.主要代码


#include "stm32f10x_lib.h"


void RCC_Configuration(void);

void NVIC_Configuration(void);

void GPIO_Configuration(void);

void Delay(vu32 nCount);


int main(void)

{

  RCC_Configuration();

  NVIC_Configuration();

  GPIO_Configuration();

  while (1)

  {

    GPIO_SetBits(GPIOC,GPIO_Pin_6);//点亮LED1

    Delay_ms(100);

    GPIO_ResetBits(GPIOC,GPIO_Pin_6);//熄灭LED1


    GPIO_SetBits(GPIOC,GPIO_Pin_7);//点亮LED2

    Delay_ms(100);

    GPIO_ResetBits(GPIOC,GPIO_Pin_7);//熄灭LED2


    GPIO_SetBits(GPIOC,GPIO_Pin_8);//点亮LED3

    Delay_ms(100);

    GPIO_ResetBits(GPIOC,GPIO_Pin_8);//熄灭LED3


    GPIO_SetBits(GPIOC,GPIO_Pin_9);//点亮LED4

    Delay_ms(100);

    GPIO_ResetBits(GPIOC,GPIO_Pin_9);//熄灭LED4

  }

}

关键字:stm32  GPIO配置  库函数  流水灯 引用地址:stm32之GPIO配置及库函数学习笔记——以流水灯为例

上一篇:stm32—GPIO操作(库函数)
下一篇:STM32封装自己的库函数(GPIO初始化)

推荐阅读最新更新时间:2024-11-10 16:31

STM32-一文搞懂ADC
1 STM32ADC简介 STM32 拥有 1~3 个 ADC(STM32F101/102 系列只有 1 个 ADC,F103系列至少有两个ADC),这些 ADC 可以独立使用,也可以使用双重模式(提高采样率)。STM32 的12位ADC是一种逐次逼近型模拟数字转换器,它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。ADC的输入时钟不得超过14MHz,它是PCLK2经分频产生。 1.1 ADC特性 12位分辨率 转换结束、注入转换结束和发生模
[单片机]
STM32-一文搞懂ADC
stm32 time4 pwm
pwm.h #ifndef _PWM_H #define _PWM_H #include sys.h void TIM14_PWM_Init(u32 arr,u32 psc); #endif pwm.c #include pwm.h //TIM4 PWM部份初始化 //PWM 输出初始化arr:自动重装值 psc:时钟预分频系数 void TIM14_PWM_Init(u32 arr,u32 psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_O
[单片机]
stm32阶段总结录
一、C语言之预处理 预处理有三种:宏定义、条件编译、文件包含。 1.1、宏定义 #define EXT extern // 用EXT代替extern关键字 1.2、文件包含 #include “stm32f10x.h” 1.3、条件编译 防止同一个头文件被不同的文件多次包含,编译时所有文件编译成一个可执行文件有大量命名冲突。 #ifndef 标识符 //if not defined #define 标识符 代码段落 #endif #ifndef _public_h #define _public_h #include public.h #endif #空指令,无任何效果 #include包含一个源代码文
[单片机]
<font color='red'>stm32</font>阶段总结录
STM32 Cotex-M3处理器系列编程】按键灯亮
//分别按下S1~S4,D1~D4分别点亮 #include stm32f10x.h void Delay(unsigned int x); int main(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE,ENABLE);//IO口使能设置 GPIO_InitTypeDef GPIO_InitStructure; //定义结构体 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; //LED管脚
[单片机]
STM32_外部中断线/事件线理解
这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套。图中的蓝色虚线箭头,标出了外部中断信号的传输路径。 首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断挂起请求寄存器,最后经过编号4的与门输出到NVIC中断检测电路,这个边沿检测电路受上升沿或下降沿选择寄存器控制,用户可以使用这两个寄存器控制需要哪一个边沿产生中断,因为选择上升沿或下降沿是分别受2个平行的寄存器控制,所以用户可以同时选择上升沿或下降沿,而如果只有一个寄存器控制,那么只能选择一个边沿了。 接下来是编号3的或门,这个或门的另一个输入是软件中断/事件寄存器
[单片机]
STM32_外部中断线/事件线理解
STM32端口复用与重映射
STM32上有很多I/O口,也有很多的内置外设,像I2C,ADC,ISP,USART等,为了节省引出管脚,这些内置外设基本上是与I/O口共用管脚的,也就是I/O管脚的复用功能。但是STM32还有一特别之处:很多复用内置的外设的I/O引脚可以通过重映射功能,从不同的I/O管脚引出,即复用功能的引脚是可通过程序改变的。设置复用重映射和调试I/O配置寄存器(AFIO_MAPR)实现引脚的重新映射。这时,复用功能不再映射到它们的原始分配上。使用方法: 简单的说 STM32的 io 有3个功能一个是默认的,一个是复用,一个是重映射功能(这个其实也属于复用)。如果配置成复用,则将使用第2个功能;同时,相应的重映射配置了,则将使用第3个
[单片机]
<font color='red'>STM32</font>端口复用与重映射
stm32 can中断通信
1、初始化can时钟 void canRCCInit() { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); 2、配置can的GPIO引脚 void canGPIOConfigure() { GPIO_PinRemapConfig(GPIO_Remap1_CAN1, ENABLE); GPIO_InitTypeDef gpioI
[单片机]
基于STM32的带触摸屏的无线解说器
本实例是以STM32F103系列单片机作为核心处理器,利用VS1003芯片进行音频解码的一种无线解说器。通过对触摸显示屏的操作,实现手持部分和终端部分二者的无线通讯。系统采用大容量的SD卡作为存储部分,通过SPI将VS1003B与SD卡的数据与STM32进行交互通信。本解说器在播放时没有出现理论上的断续情况,音质较好,占用的软硬件资源也较少,为后续的扩展留下了很大空间。 无线讲解器通常用于工厂、博物馆、景区等室外空旷场所供参观介绍用,通过事先在场所安放无线发射模块,并控制发射模块的工作范围。听众到达景点后,手上的讲解器将自动接收各个地点的无线编码信号,经解码后即可将存储在SD卡中的语音播放,以便清晰地全程收听全部介绍内
[单片机]
基于<font color='red'>STM32</font>的带触摸屏的无线解说器
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved