作者:ljf101230
对于咱们主板,首先就是看看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 控制的命令。
下面看一下,显示视频。
本文源自:平头哥芯片开放社区
欢迎关注公众号:芯片开放社区(ID:OCC_THEAD),查看更多应用实战文章。