找回密码
 立即注册
查看: 894|回复: 1

关于FreeRTOS中Timer0作滴答定时器的个人理解

[复制链接]
  • TA的每日心情
    奋斗
    昨天 08:35
  • 签到天数: 136 天

    [LV.7]常住居民III

    12

    主题

    98

    回帖

    1394

    积分

    金牌会员

    积分
    1394
    发表于 2022-12-15 21:45:08 | 显示全部楼层 |阅读模式


    以官方FreeRTOS for STC32G12K128 官方简洁可靠版V1.0.2 发布,C语言库函数版为例,关于FreeRTOS中Timer0作滴答定时器的个人理解,有不对的地方请大家指正,共同进步:

    main.c文件中,main函数运行至87行调用vTaskStartScheduler()

    然后跳转至tasks.c文件1997行开始执行vTaskStartScheduler(),里面一直往下执行至2097行的if( xPortStartScheduler() != pdFALSE )语句,该语句中调用了xPortStartScheduler()

    然后跳转至port.c文件123行开始执行xPortStartScheduler() ,里面一直往下执行至128行调用prvPortSetupTimerInterrupt(),然后跳转至同文件的213行执行prvPortSetupTimerInterrupt()

    prvPortSetupTimerInterrupt()就是对Timer0的设置,其中portRELOAD_VALUE已在port.c的40行定义,该行的configCPU_CLOCK_HZ 和 configTICK_RATE_HZ在FreeRTOSConfig.h的98和99行定义,MAIN_Fosc的大小在同文件的67行


    上面完成Timer0设置之后,回到xPortStartScheduler()继续执行就开始任务调度了,正常情况下是不会再回到if( xPortStartScheduler() != pdFALSE )的判断
    回复 送花

    使用道具 举报

    该用户从未签到

    0

    主题

    5

    回帖

    38

    积分

    新手上路

    积分
    38
    发表于 2022-12-16 13:12:30 | 显示全部楼层
    支持大佬第一个吃螃蟹:lol
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-4-20 06:35 , Processed in 0.051391 second(s), 32 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表