搜索
写经验 领红包
 > 旅游

为什么要用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中断中执行对上文(当前执行的任务)的保存和下文(将要执行的任务)的加载,之后将切回到 用户级线程模式,执行刚才新加载的任务

本文内容由快快网络小畅创作整理编辑!