本人于24年七月份开始学习泰凌微8258的相关知识,在各位朋友的帮助下,一个月的时间,从一个小白,变成一个入门级菜鸟。学会了点亮小灯、用按钮控制小灯的开关、按钮控制RGB改变小灯的颜色、用定时器检测按钮长按从而控制小灯开关、检测ADC值、五路PWM调光,LCD屏幕的点亮,下面我会逐一把我的完成方式写出来,希望可以帮助到跟我一样的初学者,同时也希望各位大佬可以指正我的不足。😂
本篇主要讲的是怎么点亮一个小灯,并且通过按钮去控制小灯的开关(包括怎么样让小灯闪烁)。
1.点亮
点亮一个小灯首先要找到板子对应的GPIO口,然后对这个GPIO口进行初始化,就这么简单。这里建议把初始化的代码放在nain_light.c中的user_init();函数里面。代码如下:
gpio_set_func(LED_ON_OFF_Pin,AS_GPIO);
gpio_set_output_en(LED_ON_OFF_Pin,1);
gpio_set_input_en(LED_ON_OFF_Pin,0);
gpio_write(LED_ON_OFF_Pin,1);
其中的LED_ON_OFF_Pin就是小灯对应的GPIO口,只不过在light.h中被宏定义了,#define LED_ON_OFF_Pin GPIO_PA1,GPIO_PA1就是我这个板子对应的GPIO口的名称,大家可以根据自己的板子来进行修改。其中的函数作用分别是, 设置GPIO模式、设置输入还是输出模式、写入指令(高电平),大家可以看自己的板子到底是给1开启小灯还是给0开启小灯,至此小灯就可以点亮了。
2.按钮控制小灯开关
同小灯一样,首先要做的就是初始化按钮的GPIO口,这里不过多赘述,代码如下:
gpio_set_func(KEY_ON_OFF_Pin,AS_GPIO);
gpio_set_input_en(KEY_ON_OFF_Pin,1);
gpio_set_output_en(KEY_ON_OFF_Pin,0);
gpio_setup_up_down_resistor(KEY_ON_OFF_Pin, PM_PIN_PULLUP_10K);//上拉
然后你就可以在main_loop函数里面写入你自己代码,完成通过按钮控制小灯的操作了。当然你要是想让代码简洁并且可移植,也可以在外面定义一个新的函数,然后在main_loop函数直接引用。
void key(void)
{
static u32 i=0;
if(gpio_read(KEY_ON_OFF_Pin)==0)
{
sleep_us(30000);//按键消抖,不然可能按键读取不准确
i++;
if(i==1)
{
gpio_write(LED_ON_OFF_Pin,1);//按下按钮第一次开灯
}
else if(i==2)
{
gpio_write(LED_ON_OFF_Pin,0);//按下按钮第二次关灯
i=0; //标志位重置
}
}
}
闪烁的话就是在置零置一之间加入延时函数sleep_us()就可以了。
void shine (void){
gpio_write(LED_ON_OFF_Pin,1);
sleep_us(500000);//延时500*1000us=500ms=0.5s
gpio_write(LED_ON_OFF_Pin,0);
sleep_us(500000);
}
好了,下期再见!ヾ(•ω•`)o88