《《《《《正文》》》》》
《硬件设计》
原理图:
GPIO引脚 | |
LED1 | PA11 |
LED2 | PA12 |
LED3 | PB9 |
LED4 | PB8 |
《加载GPIO库文件》
1、按下图步骤加载GPIO库文件(环境搭建已经写过了,这里不多说明)
2、这里多说几句,打开stm32f10x_gpio.h,看里面的全局函数。学点英语,看全局函数的命名你都能知道函数的作用了,这是一个使用库函数的技巧。
《软件设计》
LED的GPIO模块编程流程图:
一、》GPIO时钟初始化
库函数在stm32f10x_rxx.h库文件里。这里注意,因为各功能模块的时钟总线的时钟源不同,因此需要选择能提供时钟的总线,时钟总线时钟源不同,时钟初始化函数就不同,STM32就分APB1、APB2、AHB时钟总线;下图是时钟初始化库函数。
那如何知道自己的功能模块的时钟总线初始化函数呢/strong>
同样在stm32f10x_rxx.h库文件里,找到如下宏定义:
根据宏定义后面的功能简写即可知道自己的功能模块的时钟总线,就如今天我们的指示灯的GPIO是PB8、PB9、PA11、PA12,因此我们要找到GPIOA和GPIOB的时钟总线,如下图我们就知道是APB2时钟总线;
因此初始化函数为
二、》GPIO相关参数配置
初始化函数在stm32f10x_gpio.h库文件里。如下图
看到传参是结构体,我们跳转结构体(如下图),可以看到配置GPIO的参数,包括GPIO名称、GPIO速率、GPIO模式,这些具体可配置参数,在下图结构体中跳转类型就可以进一步看到了。
我们今天输出LED,因此需要输出模式,代码如下
三、》GPIO输出电平设置
库函数在stm32f10x_gpio.h中,该文件中还有很多其他的函数,这些函数看名字就知道大概意思了,今天我们只需要2个函数,就是输出高或者低电平,如下图红框内函数,GPIO_SetBits表示输出高,GPIO_ResetBits表示输出低;
为了方便,我把4个LED的GPIO电平操作宏定义,代码如下。/p>
《流水灯实验》
下面用我的无人机测试板做个江湖上人称流水灯的传说;
下面是整合的整个代码,这里延时函数我懒,所以随便写了一下;
https://pan.baidu.com/s/1t9HQSca6UHnZSdcVZi45YQ/p>
STM32f103流水灯
《《《《《END》》》》》
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!