当前位置:网站首页>FreeRTOS实验--一个函数创建多个任务
FreeRTOS实验--一个函数创建多个任务
2022-08-02 12:27:00 【山、】
之前说过,创建任务的时候,可以传递给任务参数,下面通过实验,对一个任务函数传入不同的参数展示如何使用一个函数创建多个任务。
任务函数:把传入的数据转换为int型数据然后打印出来。
void TaskAll(void * param)
{
int val = (int)param;
while(1)
{
printf("%d",val);
}
}
主函数:使用TaskAll函数创建三个任务,每个任务传入不同的参数,除了传入参数不同,其他的参数都一样,实际上连传入的参数也可以相同,但是为了现象更加明显,这里传入了不同的参数。
int main( void )
{
prvSetupHardware();
printf("Hello World!\r\n");
xTaskCreate(TaskAll,"TaskAll",100,(void*)1,1,NULL);
xTaskCreate(TaskAll,"TaskAll",100,(void*)2,1,NULL);
xTaskCreate(TaskAll,"TaskAll",100,(void*)3,1,NULL);
vTaskStartScheduler();
return 0;
}
输出结果:
可以看到,一共有三个任务被执行。
那么为什么使用一个函数可以创建多个任务呢?
以为每个任务是不同的,每个任务又自己的栈空间,他们之间彼此互不干扰,只不过是他们每个任务的执行函数是一样的,都是把参数转换为int型然后打印出来。
由此我们可以明白,任务是任务,函数是函数。任务是互不相同的,即使任务的名字是一样的,但是任务的名字不重要,因为他们有自己独立的栈空间,所以他们是不同的任务。而函数是可以相同的,同一个函数名字,表示的就是一个函数,只不过这个函数可以被多个任务使用。
边栏推荐
猜你喜欢

【MySQL系列】- LIKE查询 以%开头一定会让索引失效吗

内存存储结构

Do you really understand the business process service BPass?

SQL Server 2019安装错误0x80004005 服务没有及时响应启动或控制请求详细解决方法

Drools(8):WorkBench使用

Likou 209 - String with the Minimum Length - Sliding Window Method

力扣151-颠倒字符串中的单词

Process finished with exit code 1

WPF——自定义日历

主流跨端技术一览
随机推荐
SQL Server修改数据
How to better assess credit risk?Just watch this scorecard model live
测试开发之路,我在大厂做测试这四年的感悟
darknet训练yolov4模型
数据湖(二):什么是Hudi
redis cluster cluster, the ultimate solution?
Intelligent Image Analysis-Intelligent Home Appliance Image Target Detection Statistical Counting Detection and Recognition-iCREDIT
SQL Server 数据库之导入导出数据
openGauss数据库基本操作(超详细)
智能图像分析-智能家用电器图像目标检测统计计数检测与识别-艾科瑞特科技(iCREDIT)
Pod调度策略:亲和性、污点与污点容忍
力扣35-搜索插入位置——二分查找
An example of type3 voltage loop compensator taking Boost as an example
Software component analysis: 5 major capabilities to protect software supply chain security
Thymeleaf
技术分享| 融合调度系统中的电子围栏功能说明
服务器间传输文件
excel 批量翻译-excel 批量函数公司翻译大全免费
手撸架构,Mysql 面试126问
SuperSlide系列之轮播图