• stm32cubemx hal学习记录:FreeRTOS软件定时器


    一、配置过程

    1、配置RCC、USART1、时钟84M

    2、配置SYS,将Timebase Source修改为除滴答定时器外的其他定时器。

    3、初始化LED的两个引脚、两个按键引脚

    4、开启FreeRTOS,v1与v2版本不同,一般选用v1即可

    5、打开定时器选项

     6、创建两个定时器,一个周期定时器,一个单次定时器

     Timer Name: 定时器名称
    Callback: 回调函数名称
    Type: 定时器类型,osTimerPeriodic周期定时器,osTimerOnce单次定时器
    Code Generation Option: 代码生成选项
    Parameter: 回调函数形参,不用的时候配置为0或NULL即可
    Allocation: 分配方式:Dynamic 动态内存创建
    Conrol Block Name: 控制块名称

    7、生成代码

    二、API

    1、创建软件定时器:osTimerCreate

    1. osTimerId timer01_stackHandle;
    2. osTimerDef(timer01_stack, timer01_thread_entry);
    3. timer01_stackHandle = osTimerCreate(osTimer(timer01_stack), osTimerPeriodic, NULL);

    2、启动定时器:osTimerStart,可以在中断中使用,单位为ms

    osTimerStart(timer01_stackHandle,1000);

    3、停止定时器:osTimerStop,可以在中断中使用

    osTimerStop(timer01_stackHandle);

    4、删除定时器

    osTimerDelete(timer01_stackHandle)

    三、代码使用

    1、在函数void StartDefaultTask(void const * argument)中开启定时器

    1. void StartDefaultTask(void const * argument)
    2. {
    3. osTimerStart(timer01_stackHandle,1000);
    4. osTimerStart(timer02_stackHandle,2000);
    5. for(;;)
    6. {
    7. osDelay(1);
    8. }
    9. }

    2、在定时器1和定时器2中添加代码来验证定时器是否工作,定时器1设置的为循环定时器,定时器2设置的为单次定时器

    1. TickType_t tick_num;
    2. uint32_t a;
    3. void timer01_thread_entry(void const * argument)
    4. {
    5. tick_num=osKernelSysTick();
    6. a++;
    7. }
    8. TickType_t tick_num1;
    9. uint32_t a1;
    10. void timer02_thread_entry(void const * argument)
    11. {
    12. tick_num1=osKernelSysTick();
    13. a1++;
    14. }

    进行debug后发现,开始执行后a的数值每秒增加1,tick_num每秒增加1000。a1在开始执行两秒后+1,tick_num=2000,且之后不再进行工作,因为timer2设置的为单次定时器。

  • 相关阅读:
    SpringSecurity 配置与使用(含新 API 替换过时的 WebSecurityConfigurerAdapter)
    Python基础专题 - 教你使用装饰器
    搞定“项目八怪”,你就是管理高手!
    Java SE 10 新增特性
    Hadoop如何进行分布式存储和处理大数据?
    实操演练 | 不使用联接查询多个表
    这8个忠告会让你在2024过得更好
    一个简易的低代码
    计算机体系结构:编译器预取例题(优化前后失效次数计算)
    一篇学会JUC、JVM 吊打面试官!
  • 原文地址:https://blog.csdn.net/ohhjack/article/details/127989119