• Tlsr8258开发-添加软件定时器


    1. 使能软件定时器

    在blt_soft_timer.h中,将BLT_SOFTWARE_TIMER_ENABLE定义为1

    1. #ifndef BLT_SOFTWARE_TIMER_ENABLE
    2. #define BLT_SOFTWARE_TIMER_ENABLE 1//0 //enable or disable
    3. #endif

     默认情况下,最大的可以创建的时钟个数为4

    #define 	MAX_TIMER_NUM							4   //timer max number

    2. 在tl_commom.h中添加头文件

    #include "vendor/common/blt_soft_timer.h"

    3.在主函数中调用以下函数

            4.1 定时器初始化函数blt_soft_timer_init();

            4.2 添加的定时器事件blt_soft_timer_add(led_event,500000);

            4.3 添加周期处理函数blt_soft_timer_process(MAINLOOP_ENTRY);MAINLOOP_ENTRY默认定义为0,不要去修改

    1. _attribute_ram_code_ int main (void) //must run in ramcode
    2. {
    3. blt_soft_timer_init();
    4. key_init();
    5. led_init();
    6. blt_soft_timer_add(key_event,10000);//10ms
    7. blt_soft_timer_add(led_event,500000);//500ms
    8. while (1) {
    9. main_loop ();
    10. blt_soft_timer_process(MAINLOOP_ENTRY);//增加周期处理
    11. }
    12. }

    在添加blt_soft_timer_add(led_event,500000);//500ms任务时;如果返回值写的是return  1,LED闪烁异常,这问题挺奇怪的,我也不知道原因。

    1. int led_event(void)
    2. {
    3. #if 1
    4. static u8 temp = 0;
    5. temp++;
    6. if(temp % 4 == 0)
    7. {
    8. gpio_toggle(LED1);
    9. }
    10. if(temp % 4 == 1)
    11. {
    12. gpio_toggle(LED2);
    13. }
    14. if(temp % 4 == 2)
    15. {
    16. gpio_toggle(LED3);
    17. }
    18. if(temp % 4 == 3)
    19. {
    20. gpio_toggle(LED4);
    21. }
    22. #endif
    23. return 0;//这里如果返回1,led灯不会每隔500ms闪烁
    24. }

  • 相关阅读:
    java压缩图片几种方式及安装
    Linux常用命令
    docker安装anaconda3 python环境
    Sketch macOS 支持m1 m2 Sketch 2023最新中文版
    动态规划9(Leetcode63不同路径2)
    Webmin远程命令执行漏洞复现
    Docker 安装 Redis
    PCLVisualizer显示点云的深层用法
    Unity 编辑器常用方法
    c和cpp实现CPU核上绑定固定线程
  • 原文地址:https://blog.csdn.net/qq_38591801/article/details/126602366