STM32F103之指示灯(LED)模块开发(大结局献上流水灯视频)

STM32F103之指示灯(LED)模块开发(大结局献上流水灯视频)

《《《《《正文》》》》》


 

《硬件设计》

原理图:

GPIO引脚
LED1 PA11
LED2 PA12
LED3 PB9
LED4 PB8

STM32F103之指示灯(LED)模块开发(大结局献上流水灯视频)

STM32F103之指示灯(LED)模块开发(大结局献上流水灯视频)

 

《加载GPIO库文件》

1、按下图步骤加载GPIO库文件(环境搭建已经写过了,这里不多说明)

STM32F103之指示灯(LED)模块开发(大结局献上流水灯视频)

 

STM32F103之指示灯(LED)模块开发(大结局献上流水灯视频)

 

2、这里多说几句,打开stm32f10x_gpio.h,看里面的全局函数。学点英语,看全局函数的命名你都能知道函数的作用了,这是一个使用库函数的技巧。

STM32F103之指示灯(LED)模块开发(大结局献上流水灯视频)

 

《软件设计》

LED的GPIO模块编程流程图:

STM32F103之指示灯(LED)模块开发(大结局献上流水灯视频)

 

一、》GPIO时钟初始化 

    库函数在stm32f10x_rxx.h库文件里。这里注意,因为各功能模块的时钟总线的时钟源不同,因此需要选择能提供时钟的总线,时钟总线时钟源不同,时钟初始化函数就不同,STM32就分APB1、APB2、AHB时钟总线;下图是时钟初始化库函数。

STM32F103之指示灯(LED)模块开发(大结局献上流水灯视频)

 

    那如何知道自己的功能模块的时钟总线初始化函数呢/strong>

    同样在stm32f10x_rxx.h库文件里,找到如下宏定义:

STM32F103之指示灯(LED)模块开发(大结局献上流水灯视频)

STM32F103之指示灯(LED)模块开发(大结局献上流水灯视频)

 

根据宏定义后面的功能简写即可知道自己的功能模块的时钟总线,就如今天我们的指示灯的GPIO是PB8、PB9、PA11、PA12因此我们要找到GPIOA和GPIOB的时钟总线,如下图我们就知道是APB2时钟总线;

 

STM32F103之指示灯(LED)模块开发(大结局献上流水灯视频)

因此初始化函数为

 

二、》GPIO相关参数配置

    初始化函数在stm32f10x_gpio.h库文件里。如下图

STM32F103之指示灯(LED)模块开发(大结局献上流水灯视频)

 

看到传参是结构体,我们跳转结构体(如下图),可以看到配置GPIO的参数,包括GPIO名称、GPIO速率、GPIO模式,这些具体可配置参数,在下图结构体中跳转类型就可以进一步看到了。

STM32F103之指示灯(LED)模块开发(大结局献上流水灯视频)

 


 

    我们今天输出LED,因此需要输出模式,代码如下


 

三、》GPIO输出电平设置

库函数在stm32f10x_gpio.h中,该文件中还有很多其他的函数,这些函数看名字就知道大概意思了,今天我们只需要2个函数,就是输出高或者低电平,如下图红框内函数,GPIO_SetBits表示输出高,GPIO_ResetBits表示输出低;

STM32F103之指示灯(LED)模块开发(大结局献上流水灯视频)

 

    为了方便,我把4个LED的GPIO电平操作宏定义,代码如下。/p>


 

《流水灯实验》

下面用我的无人机测试板做个江湖上人称流水灯的传说;

STM32F103之指示灯(LED)模块开发(大结局献上流水灯视频)

 

下面是整合的整个代码,这里延时函数我懒,所以随便写了一下;

源代码百度盘地址:(公众号发送1234获取提取码,需要自提)

https://pan.baidu.com/s/1t9HQSca6UHnZSdcVZi45YQ/p>

STM32f103流水灯

《《《《《END》》》》》

STM32F103之指示灯(LED)模块开发(大结局献上流水灯视频)

来源:airX嵌入式(微信公众号同名)

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年3月13日
下一篇 2021年3月13日

相关推荐