STM32单片机点亮流水灯

STM32单片机GPIO口点亮流水灯

STM32IO口简介

基于固件库函数配置GPIO口

GPIO 相关的函数和定义分布在固件库文件 stm32f10x_gpio.c 和头文件 stm32f10x_gpio.h 文件中。

在固件库开发中,操作寄存器 CRH 和 CRL 来配置 IO 口的模式和速度是通过 GPIO 初始化函数完成:

这个函数有两个参数:
第一个参数是用来指定 GPIO,取值范围为 GPIOA~GPIOG。
第二个参数为初始化参数结构体指针,结构体类型为 GPIO_InitTypeDef。结构体的具体定义如下。

那么如何具体配置一个IO口呢br> 初始化结构体初始化 GPIO 的常用格式是:

上面代码的意思是设置 GPIOB 的第 5 个端口为推挽输出模式,同时速度为 50M。从上面初始化代码可以看出,结构体 GPIO_InitStructure 的第一个成员变量 GPIO_Pin 用来设置是要初始化哪个或者哪些 IO 口;第二个成员变量 GPIO_Mode 是用来设置对应 IO 端口的输出输入模式,第三个参数是 IO 口速度设置,有三个可选值。GPIO_Mode和GPIO_Speed均是由枚举类型定义。具体定义分别为

GPIO_Mode:

GPIO_Speed:

这样我们就可以初始化好一个GPIO口。

实现流水灯的基本代码

想要实现流水灯,要先了解控制GPIO口输出高低电平的函数。

  • 输出高电平
  • 输出低电平

使用IO口的基本操作为
1) 使能 IO 口时钟。调用函数为 RCC_APB2PeriphClockCmd()。 2) 初始化 IO 参数。调用函数 GPIO_Init();
3) 操作 IO。

实操一波
先建立led.c和led.h文件

在led.h文件里,可以使用如下宏定义

这样就可以实现位带操作来实现操作某个 IO 口的 1 个位

我们在main.c里写下主函数

如果没有使用宏定义,也可以使用输出电平函数进行设计


由于stm32精英板的led灯只有两个,如果点亮外设的led灯,最好注意一下IO口的选择,许多IO口有多种功能,在选择IO口上可以考虑那些,未接任何外设,完全独立的IO口。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年4月16日
下一篇 2021年4月16日

相关推荐