背景交代:
在差不多熟练运用完STM32F103单片机的基本功能之后,比如GPIO口配置、IIC、SPI、PWM波等,想继续深入系统进行学习,当然学习阶段最终的目标是ARM+Linux,为了学习这些轻量级的操作系统,将开发板从F103换成了F429,因为后续想结合GUI一起学习。
去年了解过一些FreeRTOS的API,并走过一些基本的例程,但不入虎穴,焉得虎子,内核不了解有什么意思,所以这段时间的学习从内核入手,可能在学习的过程当中会复习一些《操作系统与编译原理》中的知识,希望自己尽快完成这方面的学习。
Day 1:
在新建工程之后开始了概念学习:
裸机系统:分为轮询系统和前后台系统。轮询系统:只适合哪些按顺序执行的功能代码,实时性差;前后台系统:在轮询系统中加入中断,中断被称之为前台,main函数的无限循环被称之为后台;
多任务系统:就是任务也拥有了优先级,相对前后台系统,能够提升实时性,用言语描述,太麻烦,直接用代码来表现好了:
int flag1 = 0;
int flag2 = 0;
int flag3 = 0;
void DoSomething1(void)
void DoSomething2(void)
void DoSomething3(void)
int main(void)
{
HardWareInit(); //硬件相关初始化;
RTOSInit(); //OS初始化;
RTOSStart(); //OS开始启动,多任务调度;
}
void ISR1(void)
{
flag1 = 1; //置位标志位;
}
void ISR2(void)
{
flag2 = 2; //置位标志位;
}
void ISR3(void)
{
flag3 = 1; //置位标志位;
}
void DoSomething1(void)
{
for (;;) {
if (flag1) {
} // 任务实体 ;
}
}
void DoSomething2(