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.mzph.cn/news/114551.shtml

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

相关文章

doc与docx文档转html,格式样式不变(包含图片转换)

最近做一个富文本的需求,要求把文档内容转换到富文本内,文档中的格式也好,样式也好,图片啥的都要一致展示;踩了不少坑,据说word文档其实是一个压缩包,我不是特别清楚但是也能理解,自…

一、BurpSuite基本界面学习

一、Dashboard 1.Scan Scan功能:能够对网站进行爬行(主要发现网站可交互的接口和网址关联的路径,结果显示在Target)和代码审计(除了爬行的效果外,一定程度上会进行漏洞发现与查找) 重点&#…

Java代理

一、代理模式 代理模式定义:为其他对象提供一种代理以控制对这个对象的访问。 上面类图中有一个订单接口类(OrderService)、一个订单实现类(OrderServiceImpl),订单模块的业务相对复杂和重要,如果这时候要在方法执行前后加上日志&#xff0c…

SD NAND对比TF卡优势(以CSNP4GCR01-AMW为例)

最近做的一个项目, 需要加大容量存储,这让我想到之前在做ARM的开发板使用的TF卡方案,但是TF卡需要携带卡槽的,但是有限的PCB板布局已经放不下卡槽的位置。 这个时候就需要那种能够不用卡槽,直接贴在板子上面&#xff0…

深度学习_3_实战_房价预测

梯度 实战 代码: # %matplotlib inline import random import torch import matplotlib.pyplot as plt # from d21 import torch as d21def synthetic_data(w, b, num_examples):"""生成 Y XW b 噪声。"""X torch.normal(0,…

【Ubuntu18.04】Livox Tele-15使用教程

Livox Tele-15使用教程 引言1 下载并安装Livox Viewer1.1 打开Livox Viewer程序1.2 设备ip链接 2 览沃Livox SDK二次开发并封装ROS2.1 览沃Livox SDK安装2.2 览沃Livox livox_ros_driver 安装2.3 Launch 配置文件描述 3 保存lvx格式的数据文件3.1 使用览沃Viewer保存lvx文件3.2…

vuecli2关于下载本地取环境变量没问题部署后路径取不到环境变量问题解决

功能 下载功能,用a标签实现下载 代码错误思路分析 解决办法可以忽略直接看下面 解决思路 在每个config文件中都定义了file_url,本地运行没有问题,但是部署到服务器开发环境, 拿到的是生产环境的FILE_URL地址 首先看了流水线-构建配置-编译配置-编译脚本里的打包命令: ** 本…

51单片机KeyWard

eg1: 单片机键盘的分类 键盘分为编码键盘和非编码键盘,键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值得称为编码键盘,如计算机键盘,而靠软件来识别的称为非编码键盘,在单片机组成的各种…

百度松果20231022作业

越狱 盒子与球 斯特林第二类数(用dp求)*盒子的阶乘 int dp[11][11]; //n>k int A(int x){int res1;fer(i,2,x1)res*i;return res; } signed main(){IOS;dp[2][1]dp[2][2]dp[1][1]1;fer(i,3,11){dp[i][1]1;fer(j,2,i){dp[i][j]j*dp[i-1][j]dp[i-1][j-…

面试知识储备--打包工具篇(webpack和vite)

1.vite常用配置 常用配置 1.preprocessorOptions 传递给 CSS 预处理器的配置选项 2.PostCSS 也是用来处理 CSS 的,只不过它更像是一个工具箱,可以添加各种插件来处理 CSS 3.resolve.extensions 导入时想要省略的扩展名列表。默认值为 [‘.mjs’, ‘.js’…

Linux shell编程学习笔记13:文件测试运算

*更新记录:20231020 为补充了(十五)检测文件是否存在并且是一个符号链接 补充了一个例子 Linux Shell 脚本编程和其他编程语言一样,支持算数、关系、布尔、逻辑、字符串、文件测试等多种运算。前面几节我们依次研究了 Linux she…

2.3.C++项目:网络版五子棋对战之实用工具类模块的设计

文章目录 一、实用工具类模块(一)功能 二、设计和封装(一)日志宏封装(二)mysql_util封装(三)Jsoncpp-API封装(四)file_util封装(五)st…

Python---练习:while循环案例:猜数字

需求: 计算机从1 ~ 10之间随机生成一个数字,然后提示输入数字,如果我们输入的数字与随机数相等,则提示恭喜你,答对了。如果输入的数字比随机数大,则提示,猜大了。反之,则提示猜小了…

java读取指定文件夹下的全部文件,并输出文件名,文件大小,文件创建时间

import java.io.IOException; import java.nio.file.*; import java.nio.file.attribute.*; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { try { Path startingDir Paths.get("你的目…

【蓝桥每日一题]-动态规划 (保姆级教程 篇10)#方格取数

高能预警:讲了这么久动态规划了,该上点有难度的题吧 目录 题目:方格取数 思路(解法一): 解法二: 题目:方格取数 思路(解法一): 如果只有两个方向…

SpringMVC的工作流程

1、SpringMVC的定义 Spring MVC是基于Java的开源Web框架,它是Spring框架的一部分,用于构建MVC(Model-View-Controller)模式的Web应用程序。它提供了一种灵活且强大的方式来开发Web应用程序,并将应用程序的不同层进行解…

python 之 矩阵相关操作

文章目录 1. **创建矩阵**:2. **矩阵加法**:3. **矩阵乘法**:4. **矩阵转置**:5. **元素级操作**:6. **汇总统计**:7. **逻辑操作**: 理解你的需求,我将为每个功能写一个单独的代码块…

docker部署与基础操作

目录 一、Docker 概述: 1. docker简介: 2. 容器的优点: 3. 容器在内核中支持2种重要技术: 4 . 容器与虚拟机 的区别: 5. docker三个核心概念: 二、安装docker: 1. 关闭防火墙: 2. 安…

使用MFC创建一个SaleSystem

目录 1、项目的创建: 2、项目的配置: 3、设置窗口属性: (1)、设置图标 1)、添加导入资源 2)、代码初始化图标 (2)、设置标题 (3)、设置窗口…