用定时器控制D12均匀亮灭

不知道怎么用定时器来控制D12灯均匀的亮灭,并且控制在一定时间内,只知道用delay函数可以

求方法或程序

你可以写一个循环,然后定时控制就可以

定时器中断,中断函数里反转灯的状态

定时执行一次LED_toggle_timmer(int toggle_time)函数或者把函数里的东西直接放在main函数里即可实现这个功能,根据输入的toggle_time控制led灯的亮灭间隔,使用时间戳,不需要delay,实际项目中这种功能用delay控制是绝对不行的

//led状态翻转函数
void LED_toggle()
{
    static unsigned char led_status = 1;
    led_status = !led_status;
    gpio_pin_set(LED_pin, led_status);
}

void LED_toggle_timmer(int toggle_time)
{
    static unsigned int last_time = get_system_time();
    if (get_system_time() - last_time >= toggle_time)
    {
        last_time  = get_system_time();
        LED_toggle();
    }
}