FreeRTOS学习day1

顾名思义 免费的实时操作系统

用法基本和Linux下的多线程编程类似

探索者开发版实验

动态创建4个任务start_task task1 task2 task3  优先级依次为1 2 3 4 (注意优先级不能为0,0是空闲任务)

我的理解:主线程start_task 主线程   task1 task2 task3为子线程

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "FreeRTOS.h"
#include "task.h"#define START_TASK_PRIO 1  //任务优先级
#define START_STK_SIZE  120  //任务堆栈
TaskHandle_t Start_Handler;
void start_task(void *pvParameters);#define Task1_TASK_PRIO 2  //任务优先级
#define Task1_STK_SIZE  120  //任务堆栈
TaskHandle_t Task1_Handler;
void task1_task(void *pvParameters);#define Task2_TASK_PRIO 3  //任务优先级
#define Task2_STK_SIZE  120  //任务堆栈
TaskHandle_t Task2_Handler;
void task2_task(void *pvParameters);#define Task3_TASK_PRIO 4  //任务优先级
#define Task3_STK_SIZE  120  //任务堆栈
TaskHandle_t Task3_Handler;
void task3_task(void *pvParameters);//*******************下面注释掉的代码是通过 位带 操作实现IO口控制**************************************int main(void)
{ uart_init(115200);delay_init(168);		  //初始化延时函数LED_Init();		        //初始化LED端口while(1){xTaskCreate((TaskFunction_t) start_task,(char *) "start_task",(uint16_t) START_STK_SIZE,(void *) NULL,(UBaseType_t) START_TASK_PRIO,(TaskHandle_t *) &Start_Handler ); /*lint !e971 Unqualified char types are allowed for strings and single characters only. */vTaskStartScheduler();//   开启任务调度器  注意一定要开启}
}//创建开始任务
void start_task(void *pvParameters)
{//创建task1xTaskCreate((TaskFunction_t) task1_task,(char *) "task1_task",(uint16_t) Task1_STK_SIZE,(void *) NULL,(UBaseType_t) Task1_TASK_PRIO,(TaskHandle_t *) &Task1_Handler ); /*lint !e971 Unqualified char types are allowed for strings and single characters only. *///创建task2xTaskCreate((TaskFunction_t) task2_task,(char *) "task2_task",(uint16_t) Task2_STK_SIZE,(void *) NULL,(UBaseType_t) Task2_TASK_PRIO,(TaskHandle_t *) &Task2_Handler ); /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
//创建task3
xTaskCreate((TaskFunction_t) task3_task,(char *) "task3_task",(uint16_t) Task3_STK_SIZE,(void *) NULL,(UBaseType_t) Task3_TASK_PRIO,(TaskHandle_t *) &Task3_Handler ); /*lint !e971 Unqualified char types are allowed for strings and single characters only. */		
vTaskDelete(Start_Handler);									 }void task1_task(void *pvParameters)
{while(1){printf("task 1 is ok\r\n");vTaskDelay(500);}}
void task2_task(void *pvParameters)
{while(1){printf("task 2 is ok\r\n");vTaskDelay(800);}}
void task3_task(void *pvParameters)
{while(1){printf("task 3 is ok\r\n");vTaskDelay(1000);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/144838.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯(砝码称重,C++)

思路&#xff1a; 1、用到动态规划思想。 2、用ans[i][j]记录用前i个砝码&#xff0c;能不能称出重量j。 3、详细思路见代码注释&#xff0c;易懂。 #include<iostream> #include<cmath> using namespace std; int main() {int n;int a[110];//记录每个砝码重量int…

苹果ios打包出来的ipa应用APP怎么不能安装?多种安装不上的原因排查

亲爱的同学们&#xff0c;非常高兴能和同学们一起探讨关于苹果应用安装失败的问题。作为一个开发者&#xff0c;我们很可能会遇到这样的情况&#xff1a;开发好一个应用&#xff0c;兴致勃勃地想把它运行到手机上去测试&#xff0c;结果发现安装失败了。而此时&#xff0c;定位…

【Acwing166】数独(dfs+剪枝+位运算)

本题思路来源于acwing算法提高课 题目描述 看本文需要准备的知识 1.dfs算法基本思想 2.位运算基础 3.对剪枝这个名词的大概了解 剪枝优化位运算优化 常见四种剪枝策略 首先考虑这道题的搜索顺序&#xff0c;很明显&#xff0c;可以随意选择一个空格子&#xff0c;分支为这…

代码随想录算法训练营第二十九天 | 回溯算法总结

​ 代码随想录算法训练营第二十九天 | 回溯算法总结 1. 组合问题 1.1 组合问题 在77. 组合中&#xff0c;我们开始用回溯法解决第一道题目&#xff1a;组合问题。 回溯算法跟k层for循环同样是暴力解法&#xff0c;为什么用回溯呢&#xff1f;回溯法的魅力&#xff0c;用递…

知识分享|分段函数线性化及matlab测试

目录 1 使用0-1变量将分段函数转换为线性约束 2 连续函数采用分段线性化示例 3 matlab程序测试 4 matlab测试结果说明 5 分段线性化应用 1 使用0-1变量将分段函数转换为线性约束 2 连续函数采用分段线性化示例 3 matlab程序测试 clc;clear all; gn10;tn1; x_pfsdpvar(1, t…

软件测试肖sir__python之ui自动化定位方法(2)

Selenium中元素定位方法 一、定位方法 要实现UI自动化&#xff0c;就必须学会定位web页面元素&#xff0c;Selenium核心 webdriver模块提供了9种定位元素方法&#xff1a; 定位方式 提供方法 id定位 find_element_by_id() name定位 find_element_by_name() class定位 find_elem…

CentOS 系统安装和使用Docker服务

系统环境 使用下面的命令&#xff0c;可以查看CentOS系统的版本。 lsb_release -a结果&#xff1a; 说明我的系统是7.9.2009版本的 安装Docker服务 依次执行下面的指令&#xff1a; yum install -y yum-utilsyum install -y docker即可安装docker服务 如果这样安装不成功…

学习笔记1——SSM的基础知识

学习笔记系列开头会发一些寻亲消息 网站&#xff1a;https://baobeihuijia.com/bbhj/contents/3/195510.html SSM的基础知识 cs架构&#xff1a;多个客户端可以访问一台服务器 请求&#xff1a;协议&#xff1a;//主机[: 端口][/路径][?查询参数] http就是一种协议&#…

B-tree(PostgreSQL 14 Internals翻译版)

概览 B树(作为B树访问方法实现)是一种数据结构&#xff0c;它使您能够通过从树的根向下查找树的叶节点中所需的元素。为了明确地标识搜索路径&#xff0c;必须对所有树元素进行排序。B树是为有序数据类型设计的&#xff0c;这些数据类型的值可以进行比较和排序。 下面的机场代…

蓝桥杯每日一题2023.10.20

题目描述 等差数列 - 蓝桥云课 (lanqiao.cn) 知识点&#xff1a; 排序找出最大公约数则为公差 项数: n (第n项值-首项) / 公差 1。 n (an-a1) / d1 #include<bits/stdc.h> using namespace std; typedef long long ll; const int N 2e5 10; int a[N], n; int gcd…

RabbitMQ中的核心概念和交换机类型

目录 一、RabbitMQ相关概念二、Exchange类型三、RabbitMQ概念模型总结 一、RabbitMQ相关概念 Producer&#xff1a;生产者&#xff0c;就是投递消息的一方。生产者创建消息&#xff0c;然后发布到RabbitMQ中。消息一般可以包含两个部分&#xff1a;消息体和附加消息。 消息体…

openGauss学习笔记-102 openGauss 数据库管理-管理数据库安全-客户端接入之查看数据库连接数

文章目录 openGauss学习笔记-102 openGauss 数据库管理-管理数据库安全-客户端接入之查看数据库连接数102.1 背景信息102.2 操作步骤 openGauss学习笔记-102 openGauss 数据库管理-管理数据库安全-客户端接入之查看数据库连接数 102.1 背景信息 当用户连接数达到上限后&#…