【RTOS快速入门】04_自己的第一个FreeRTOS程序及引申
·
前言
本文我们将完成创建任务并进行执行,创建任务一使用串口打印1,创建任务2使用串口打印2,通过调试器观察有没有成功执行任务。
一、创建两个任务并成功执行
1.了解“任务创建”函数的使用

/*-----------------------------------------------------------*/
void Task1Function( void * param)
{
}
/*-----------------------------------------------------------*/
int main( void )
{
TaskHandle_t xHandlerTask1; //定义任务1的句柄
#ifdef DEBUG
debug();
#endif
prvSetupHardware();
xTaskCreate(Task1Function,"task1",100,NULL,1, &xHandlerTask1);
//第一个参数是一个函数指针,还可以为这个函数传入一个参数
//任务名称
//分配栈的深度
//函数参数
//任务优先级
//传入的句柄
/* Start the scheduler. */
vTaskStartScheduler();
/* Will only get here if there was not enough heap space to create the
idle task. */
return 0;
}
2.完善创建的任务1并观察其正确运行

/*-----------------------------------------------------------*/
void Task1Function( void * param)
{
while(1)
{
printf("1");
}
}
void Task2Function( void * param)
{
while(1)
{
printf("2");
}
}
/*-----------------------------------------------------------*/
int main( void )
{
TaskHandle_t xHandlerTask1; //定义任务1的句柄
TaskHandle_t xHandlerTask2; //定义任务2的句柄
#ifdef DEBUG
debug();
#endif
prvSetupHardware();
xTaskCreate(Task1Function,"task1",100,NULL,1, &xHandlerTask1);
xTaskCreate(Task2Function,"task2",100,NULL,1, &xHandlerTask2);
//第一个参数是一个函数指针,还可以为这个函数传入一个参数
//任务名称
//分配栈的深度
//函数参数
//任务优先级
//传入的句柄
/* Start the scheduler. */
vTaskStartScheduler();
/* Will only get here if there was not enough heap space to create the
idle task. */
return 0;
}
/*-----------------------------------------------------------*/
二、数据类型和编码规范
1.数据类型

为什么这么进行设置?
如果是8位处理器返回一个32位的类型,就会使用更多的寄存器,效率更低
2.变量名

3.函数名
函数名的前缀有2部分:返回值类型、在哪个文件定义


4.宏定义

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐


所有评论(0)