本篇文章的重要就是程序的模块化编程
那么现在开始吧
第一步:新建工程(这个之前演示过了,所以我就直接跳过啦)
第二步:连接接线图
第三步:创建一个文件夹handware用来存放模块化
步骤与之前一样在工程文件夹新建文件夹然后放入软件最后添加路径
随后添加文件添加.c和.h文件,一个用于存放LED灯的相关程序,一个用于存放函数声明(让软件知道有这个东西)
第四步:LED.C的编写
#include "stm32f10x.h"
这是.c文件的格式,下面用来存放主体代码
首先我们应初始化GPIO口
这个跟之前的GPIO初始化一样,只是要是都放在主函数里面,会显得很冗杂,所以将函数分门别类的放入每个.c文件中
接下来我们写LED开关灯函数
定义一个函数叫LED1_ON里面存放打开LED的代码,下面都是同理。
然后将这些的第一排复制粘贴到LED.h文件中
第五步:LED.h文件的编写
#infndef_LED_H
#define _LED_H
#endif
这是.h文件的头尾,其中对模块的声明都放在其中间,复制粘贴后
在mian文件中头文件声明就可以使用函数了
就像这样直接初始化LED的GPIO端口。(至于LED1_Turn)函数下文讲。
第六步:KEY.C文件的编写
同样先将按键的GPIO端口初始化
以上是读取按键的函数,上面都有注释(想放源码在上面,但是觉得大家打一下好像能记得更清楚,别介意啊)
主要要介绍GPIO_ReadInputDataBit这个函数
这个函数就是读取键码的函数,就是检测哪个按键按下了,都没有按下返回值就是0,谁按下了返回值就是谁,PB1返回值是1,PB11返回值是11,因为按下会有滤波,所以delay20ms来消除这些滤波。
随后再将这些函数的声明放入KEY.h文件中
第七步:按照要求创建函数
我们要实现电位取反功能
这里需要GPIO_ReadInputDataBit读取PB1和PB11的端口值,取反就可以实现按一次打开再按一次关闭的功能了,随后也跟之前一样放入.h文件就好
第八步:根据要求填写主函数
这个程序的大概逻辑就是:设一个变量keynum来储存键码返回值(全局变量)
进入主函数体,先初始化两个类型的GPIO的端口,随后进入while循环,读取按键情况,当1按下时,控制1的亮,点一下亮,再点就关闭。2键同理。
本文主要是展示模块化编程的好处,主函数看着很清楚逻辑很明确。希望对大家有帮助哈哈哈,希望大家能监督我最多两天一更,最近太懒了。大家要是看不明白可以去看看C语言的枚举,结构体,数据结构的知识,我也要去恶补了哈哈哈