手机网站优化需要注意什么,企业vi案例,建站员工网站,手机网站经典案例第一个task是怎么起来的呢#xff1f;分析完vTaskStartScheduler#xff0c;就会有答案了。
那vTaskStartScheduler()干了啥呢#xff1f;
一、创建prvIdleTask task 二、xTimerCreateTimerTask里创建prvTimerTask task 三、初始化一些全局变量
3.1 xNextTaskUnblockTime…第一个task是怎么起来的呢分析完vTaskStartScheduler就会有答案了。
那vTaskStartScheduler()干了啥呢
一、创建prvIdleTask task 二、xTimerCreateTimerTask里创建prvTimerTask task 三、初始化一些全局变量
3.1 xNextTaskUnblockTime是下一个task运行的tick数
xSchedulerRunning 是否开始调度器
xTickCount 当前系统tick数
四、重点的重点是xPortStartScheduler函数
4.1 设置PendSV和SysTick的中断优先级 portNVIC_SYSPRI3_REG的定义
0xe000ed20在M7里对应的寄存器叫做 System Handler Priority Register 3是控制PendSV和SysTick中断优先级的寄存器 4.2vPortSetupTimerInterrupt 中设置中断频率和使能中断 这两个寄存器定义 0xe000e014 在M7里是SysTick Reload Value Register寄存器 0xe000e010 在M7里面是SysTick Control and Status Register 寄存器 4.3 配置FPU 4.4 prvPortStartFirstTask 开启第一个task
下面是一个多核的启动第一个task的例程 这里只分析了多核中的一个核其余一样不同的核里0x40198004中的内容不一样debug如下 芯片手册里也有讲到 4.5 pendsv中断 vPortSVCHandler
prvPortStartFirstTask里面出发svc中断后会跳转到vPortSVCHandler 此时r14里是什么呢在任务创建章节里有提到FreeRtos任务创建分析-CSDN博客 此时r14的值是 0xfffffffd是啥意思呢 表示回归到thread 模式并使用任务栈