> 旅游
为什么要用feetos(feetos列表需不需要学)
导语:FreeRTOS项目工程中为什么必需有main函数
一个工程如果没有 main 函数是编译不成功的,会出错。因为系统在开始执行的时候先执行启动文件里面的复位程序,复位程序里面会调用 C 库函数 __main,__main 的作用是初始化好系统变量,如全局变量,只读的,可读可写的等等。__main 最后会调用 __rtentry,再由 __rtentry 调用main 函数,从而由汇编跳入到 C 的世界,这里面的 main 函数就需要我们手动编写,如果没有编写 main 函数,就会出现 main 函数没有定义的错误,
具体见图: 没定义 main 函数的错误。
main 函数我们写在 main.c 文件里面,因为是刚刚新建工程,所以 main 函数暂时为空,具体见代
码清单:main 函数。
FreeRTOS使用,Main函数中需要做的事情:1、硬件初始化(也可以放在SystemInit中)
时钟初始化
中断优先级分组
中断优先级分配(设置)
外设初始化(时钟,GPIO,配置参数,是否使能中断,Enable外设,DMA 等等)
2、调用FreeRTOS Api xTaskCreate创建任务
3、调用FreeRTOS Api vTaskStartScheduler启动内核
a、启动SysTick
b、启动FirstTask
c、SysTickHandler判断(通过xTaskIncrementTick函数)是否进行任务的切换,如果需要设置PendSV PendingBit为1
d、如果当前没有中断执行,则执行PendSV中断,PendSV中断中执行对上文(当前执行的任务)的保存和下文(将要执行的任务)的加载,之后将切回到 用户级线程模式,执行刚才新加载的任务
本文内容由快快网络小畅创作整理编辑!