1 功能需求
初学入门,实验及理解GPIO的功能和基本用法,GPIO,即通用输入输出,是单片机引脚最基本的功能,这个功能能够使指定的IO口引脚输出指定的电平(高低电平),也可以通过指定的IO口引脚读取外部输入的电平(或高或低),可通过GPIO口进行数据传输和通信、也可通过GPIO口对外部电路输出高低电平实施控制功能,典型简单的控制功能可控制LED灯亮灯灭,复杂的可对伺服电机进行控制,可控制伺服电机的转动和转速。
2 基本用法流程
![f2d9e9ed6f495b4e18b3fedd419ac555.png](https://i-blog.csdnimg.cn/blog_migrate/c86156b4bee34cf208f9d709eabcd7dd.jpeg)
3 使用的工具
3.1 STM32单片机c/c++语言IDE:STM32CubeIDE
![9b8217a960a371b268ab043dbf82fbd7.png](https://i-blog.csdnimg.cn/blog_migrate/09cb308dca67b0d03b5eb662b0c8ae15.jpeg)
3.2 STM32F103单片机开发板:ST NUCLEO-F103RB
4 ST NUCLEO-F103RB开发板LED部分原理图
![fea3ce02ea79adcdba1fcb5c5d99211b.png](https://i-blog.csdnimg.cn/blog_migrate/f4693daada7cddf28d9cb323188e5a1b.jpeg)
由图可知,引脚PA5控制绿色的LD2灯,随后我们实验初始化及操作PA5控制LED灯。
5 STM32系列单片机GPIO的工作模式及参数设置
打开STM32CubeIDE,如下图所示:
![36828e29666315e255679134a9f7a5ab.png](https://i-blog.csdnimg.cn/blog_migrate/f99adff1ea1cae04642f2c3f127baf46.jpeg)
选择开启新项目,如下图所示:
![7b6d8760a1289bb439982104ad994372.png](https://i-blog.csdnimg.cn/blog_migrate/9956a5de5c27770205de08738d876a86.jpeg)
选择对应的开发板型号:NUCLEO-F103RB,如下图所示:
![a24f3fbd8fc533a44cd976cc464eeede.png](https://i-blog.csdnimg.cn/blog_migrate/13048fc7ca852a22227071d67949605b.jpeg)
智能的IDE会显示这款开发板的所有资料,如果选择芯片也同样,然后我们点击Next,如下图所示,要求输入项目名称:
![0072085a97f4ea0c67d3219d5c7dcf77.png](https://i-blog.csdnimg.cn/blog_migrate/51341530cd0bd78e8faa71d2da78ac7f.jpeg)
![20495338d1dbcec99e5f09d6a85a4144.png](https://i-blog.csdnimg.cn/blog_migrate/b463b6afd037b98308f8a4d480d05b84.jpeg)
自动下载所需要的库文件,然后我们以图像化的方式设置PA5的工作模式和参数:
设置PA5为开漏输出模式,设置为低速输出,默认输出低电平,如下图所示:
![aa86ea49b76d0d3ec12b452b0ad24173.png](https://i-blog.csdnimg.cn/blog_migrate/65c1a922a25c3651cbca32a52c101ee7.jpeg)
然后点击保存按钮,即可自动生成源代码,如下图所示:
![dcbbecab7aa2e8ac44dd84e4c4e81aeb.png](https://i-blog.csdnimg.cn/blog_migrate/d4a48e9f1b4671bc1905bc799b95ed83.jpeg)
在生成的main.c文件中添加以下函数,使LD2灯闪烁运行,
![6ee96b4fd645071f2cd215b96e2606a9.png](https://i-blog.csdnimg.cn/blog_migrate/f869737f7c2f2c80541e7ddaf67b2d9e.jpeg)
6 下载程序测试。
![5247b9ac744c3b151ed8c27173935752.png](https://i-blog.csdnimg.cn/blog_migrate/68f74fe09a899fe65c6e30cb552ccdb3.jpeg)