【平头哥RVB2601开发板试用 】GPIO控制的流水灯

[复制链接]
 楼主| peterLaw 发表于 2022-2-23 17:34 | 显示全部楼层 |阅读模式
本帖最后由 peterLaw 于 2022-2-23 17:35 编辑

对于芯片来说,其实经常用到的就是IO口了,其实其所有功能的实现都是通过IO口的复用实现的,那么今天咱们就简单对IO口控制流水灯进行讲解分析。对于咱们主板,首先就是看看LED灯在哪个引脚上控制,是高电平还是低电平触发,这些都可以从原理图上查到,如图:


可以清楚的知道,3个PED灯分别与PA7、PA25、PA4三个引脚相连,而且通过LED_RGB知道分别有三种颜色而且为低电平触发(因为共3.3V高电平)。
下面在程序中我们只需要将对应的IO口置成0,即低电平即可。
下面下载流水灯DEMO样例程序,并打开。

下面咱们对这个样例程序进行分析:


这个程序是基于GUI函数那个程序上实现的,关于画面程序前期咱们简单介绍过(第一张图片就是设置一个demo_task调用所有的任务和gui画面程序),不再赘述,
在main.c中定义了csi_gpio_pin_t 变量,这个变量其实就是引脚的别名,分别对应三个引脚,方便清晰,然后定义void led_pinmux_init()LED初始化函数和void led_refresh()LED灯循环函数。
在初始化函数中先用csi_pin_set_mux()函数定义引脚功能作为GPIO使用,函数说明和形参定义如图:
这个对pin_name_t和pin_func_t所用引脚以及功能复用的枚举列表,后期若作为其他用途也得先将其相应引脚和功能定义好,才可以实现其功能。
这个csi_gpio_pin_init()函数其实就是初始引脚别名,csi_gpio_pin_dir()这个函数就是定义引脚是输入还是输出的,咱们控制LED灯作为输出使用。
初始化完成之后,就是LED灯控制函数void led_refresh(),这个函数就是利用控制数值g_ctr++进行判断选择控制引脚输出高低电平,从而控制不同引脚亮灭。
对于本函数需要注意的细节是在里面有#ifdef和#endif,这个定义,若想启用这个之间的函数必须先#define 控制的命令。
由于视频无法上传,传流水照片如下:





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

452

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部