看电路原理图确定要配置的小灯引脚,如我这里要配置的是配置的小灯引脚是PC4按键引脚为PD3。
1、初始化引脚配置模式
gpio_set_func(GPIO_PC4, AS_GPIO); // 将小灯引脚设置为GPIO模式
gpio_set_output_en(GPIO_PC4, 1); // 设置小灯为输出模式
gpio_set_input_en(GPIO_PC4,0);
gpio_write(GPIO_PC4, 1);
gpio_set_func(GPIO_PD3,AS_GPIO);
gpio_set_input_en(GPIO_PD3, 1); // 将按键引脚设置为输入模式
gpio_setup_up_down_resistor(GPIO_PD3,1); // 设置按键的上拉电阻
gpio_set_input_en(GPIO_PC4,0);这句的意思是关闭引脚输入模式
gpio_write(GPIO_PC4, 1);这句意思是给小灯引脚一个高电平,熄灭小灯,放在这里的意思是初始化小灯默认上电熄灭,避免引起误操。
gpio_setup_up_down_resistor(GPIO_PD3,1); 这句函数就是注释里的意思,设置为上拉模式,低电平点亮。
2、写一个简单的while循环按键按下反复判断从而点亮、熄灭小灯
while (1)
{
wd_clear();
if (gpio_read(GPIO_PD3) == 0)
{
sleep_ms(500);
i++;
if(i == 2)
{
gpio_write(GPIO_PC4, 0);
}
if (i == 4)
{
gpio_write(GPIO_PC4, 1);
i = 0;
}
}
}
这里的喂狗函数wd_clear();主要是为了避免while循环造成阻塞(具体阻塞现象就是你烧录完成后,在没有进行按键操作就能看到小灯在非常微弱的间隔几秒闪一下,但是亮度非常非常小)
3、所有代码
void test2()
{
gpio_set_func(GPIO_PC4, AS_GPIO); // 将小灯引脚设置为GPIO模式
gpio_set_output_en(GPIO_PC4, 1); // 设置小灯为输出模式
gpio_set_input_en(GPIO_PC4,0);
gpio_write(GPIO_PC4, 1);
gpio_set_func(GPIO_PD3,AS_GPIO);
gpio_set_input_en(GPIO_PD3, 1); // 将按键引脚设置为输入模式
gpio_setup_up_down_resistor(GPIO_PD3,1); // 设置按键的上拉电阻
u32 i = 0;
while (1)
{
wd_clear();
if (gpio_read(GPIO_PD3) == 0)
{
sleep_ms(500);
i++;
if(i == 2)
{
gpio_write(GPIO_PC4, 0);
}
if (i == 4)
{
gpio_write(GPIO_PC4, 1);
i = 0;
}
}
}
}
后续就是在对应的.h文件中声明,在执行文件.c中调用。