基于STM32的RTOS--freertos的使用(HAL实现多任务)

news2024/12/23 15:25:39

一:STM32cubemx配置

        1:工程建立

                        (1)打开stm32cubemx  点击进入芯片选择页面

                       

                (2)选择对应的芯片型号双击

        2:调试接口配置

        

        3:时钟设置

                使用的开发板没有外部晶振不选择外部使用内部设置为最高80mhz

        4:配置串口

        使能串口2 使用异步通信 波特率为115200 数据位8 停止位1 无奇偶校验

        5:配置freerots 生成keil工程

        

二:KEil进行代码编写

        1:打开工程

               打开后编译

         

        2:对任务函数进行编写

        声明串口二句柄

                编写串口重定向函数  

        

//printf重定向函数
int fputc(int ch, FILE *f)
{
 
  HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xffff);
 
  return ch;
 
}

 

         包含相关的头文件

        

        对默认创建的函数进行任务编写

         

void StartDefaultTask(void const * argument)
{
  /* USER CODE BEGIN StartDefaultTask */
  /* Infinite loop */
  for(;;)
  {
    osDelay(1000);
		printf("StartDefaultTask:1s\r\n");
		
		osDelay(1000);
		printf("StartDefaultTask:2s\r\n");
		
  }
  /* USER CODE END StartDefaultTask */
}

 

 

        3:添加一个新的任务(实现多任务)

                第一步:

                第二步:        

        根据模版进行创建任务

//mytask:任务名称    StartmyTask:功能函数名称 osPriorityNormal:优先级 0:参数 128:栈堆大小
	osThreadDef(myTask, StartmyTask, osPriorityNormal, 0, 128);    
		
  myTaskHandle = osThreadCreate(osThread(myTask), NULL);

 

根据默认任务函数编写任务功能函数 

 

void StartmyTask(void const * argument)
{
  /* USER CODE BEGIN StartDefaultTask */
  /* Infinite loop */
  for(;;)
  {
    osDelay(3000);
		printf("StartmyTask:3s\r\n");
		
	
		
  }
  /* USER CODE END StartDefaultTask */
}

声明新的任务函数

 

 定义声明结构体符号寻址符号使用本步开头时复制的符号

         

三:结合pc端串口助手验证结果

        1:连接usb转tll模块

                使用usb转tll模块将单片机与pc端上位机建立连接

                单片机tx 连接 usb转tll rx    

                单片机rx 连接 usb转tll tx

                单片机gnd 连接 usb转tll gnd

        2:打开串口调试助手进行信息接收验证

                选择对应的串口号 波特率为115200 检验位无 数据位8 停止位1 

                单片机与usb转tll连接后下载器usb口连接pc usb转tll连接pc下载程序后打开串口调

                试助手进行验证

 

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

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

相关文章

MacOS---IDEA快捷键:生成get/set方法

介绍 在苹果电脑使用快捷键快速生成get/set方法。 快捷键 Cmdn

【大规模语言模型:从理论到实践】Transformer中PositionalEncoder详解

书籍链接:大规模语言模型:从理论到实践 第15页位置表示层代码详解 1. 构造函数 __init__() def __init__(self, d_model, max_seq_len80):super().__init__()self.d_model d_model # 嵌入的维度(embedding dimension)d_mode…

Echart 环形图 特殊字体 富文本

注&#xff1a;特殊字体需要UI人员提供一下 .ttf 文件 完整代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">&…

QAM星座图平均功率能量

文章目录 引言结论计算&推导推导公式数值结果验证参考文献 引言 本文主要参考了博客1&#xff0c;文章写的比较漂亮。但可惜推导过程是错误的 结论 先说结论&#xff0c;对于M-QAM调制而言&#xff0c;QAM符号的平均能量 E s E_{s} Es​ 可以由下式计算得到 E s ( M …

使用Qt this->pos,和event->pos 实现界面跟随鼠标移动

对比 this->pos() 表示当前窗口左上角相对于整个桌面屏幕的位置。 如下图所示 event->globalPos() 是当前鼠标点击的位置相对于桌面的位置。 想要做到鼠标界面跟随鼠标左键移动&#xff0c;就需要计算他们的相对位置。 最后让鼠标移动到新的位置的时候&#xff0c;使用…

【SRC挖掘】越权漏洞——burp插件被动检测越权漏洞,一个插件让挖洞效率翻倍!Autorize

越权与未授权漏洞 越权漏洞什么是越权漏洞&#xff1f;Autorize插件安装使用步骤拦截过滤器 越权漏洞 什么是越权漏洞&#xff1f; 越权漏洞是指应用程序未对当前用户操作的身份权限进行严格校验&#xff0c;导致用户可以操作超出自己管理权限范围的功能&#xff0c;从而操作…

硬件工程师笔试面试——继电器

目录 6、继电器 6.1 基础 继电器原理图 继电器实物图 6.1.1 概念 6.1.2 结构组成及工作 6.1.3 应用场景 6.1.4 优点与缺点 6.1.5 继电器工作原理 6.2 相关问题 6.2.1 如何选择合适的继电器满足特定的应用需求 6.2.2 继电器在汽车电子系统中通常承担那些角色 6.2.3…

Android调整第三方库PickerView宽高--回忆录

一、效果 // 时间选择implementation com.contrarywind:Android-PickerView:4.1.9 多年前&#xff0c;使用到事件选择器&#xff0c;但是PickerView默认宽度使满屏的&#xff0c;不太符合业务需求&#xff0c;当时为此花了许多时间&#xff0c;最终找到了解决方案&#xff0c;…

二维高斯函数的两种形式

第一种形式很常见 多元正态分布 多元正态分布&#xff08;Multivariate Normal Distribution&#xff09;&#xff0c;也称为多变量正态分布或多维正态分布&#xff0c;是统计学中一种重要的概率分布&#xff0c;用于描述多个随机变量的联合分布。 假设有 n n n 个随机变量…

自己设计的QT系统,留个档

注册登录 主界面展示 天气预报 音乐播放

卷积神经网络与小型全连接网络在MNIST数据集上的对比

卷积神经网络&#xff08;CNN&#xff09; 深度卷积神经网络中&#xff0c;有如下特性 很多层&#xff08;Compositionality&#xff0c;组合性&#xff09;: 深度卷积神经网络通常由多层卷积和非线性激活函数组成。这种多层结构使得网络能够逐步提取和组合低层次的特征&…

shell 学习笔记:数组

目录 1. 定义数组 2. 读取数组元素值 3. 关联数组 4. 在数组前加一个感叹号 ! 可以获取数组的所有键 5. 在数组前加一个井号 # 获取数组的长度 6. 数组初始化的时候&#xff0c;也可以用变量 7. 循环输出数组的方法 7.1 for循环输出 7.2 while循环输出 7.2.1 …

大数据-120 - Flink Window 窗口机制-滑动时间窗口、会话窗口-基于时间驱动基于事件驱动

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

Redis实战宝典:开发规范与最佳实践

目录标题 Key命名设计&#xff1a;可读性、可管理性、简介性Value设计&#xff1a;拒绝大key控制Key的生命周期&#xff1a;设定过期时间时间复杂度为O(n)的命令需要注意N的数量禁用命令&#xff1a;KEYS、FLUSHDB、FLUSHALL等不推荐使用事务删除大key设置合理的内存淘汰策略使…

Java | Leetcode Java题解之第387题字符串中的第一个唯一字符

题目&#xff1a; 题解&#xff1a; class Solution {public int firstUniqChar(String s) {Map<Character, Integer> position new HashMap<Character, Integer>();Queue<Pair> queue new LinkedList<Pair>();int n s.length();for (int i 0; i …

【python因果推断库8】工具变量回归与使用 pymc 验证工具变量1

目录 工具变量回归与使用 pymc 验证工具变量 回归机制与局部平均处理效应 旁白&#xff1a;从多元正态分布中采样 import arviz as az import daft import matplotlib.pyplot as plt import numpy as np import pandas as pd import pymc as pm import scipy from matplotli…

如何阅读PyTorch文档及常见PyTorch错误

如何阅读PyTorch文档及常见PyTorch错误 文章目录 如何阅读PyTorch文档及常见PyTorch错误阅读PyTorch文档示例常见Pytorch错误Tensor在不同设备上维度不匹配cuda内存不足张量类型不匹配 参考 PyTorch文档查看https://pytorch.org/docs/stable/ torch.nn -> 定义神经网络 torc…

红队攻防 | 利用GitLab nday实现帐户接管

在一次红队任务中&#xff0c;目标是一家提供VoIP服务的公司。该目标拥有一些重要的客户&#xff0c;如政府组织&#xff0c;银行和电信提供商。该公司要求外部参与&#xff0c;资产测试范围几乎是公司拥有的每一项互联网资产。 第一天是对目标进行信息收集。这一次&#xff0…

结构开发笔记(七):solidworks软件(六):装配摄像头、摄像头座以及螺丝,完成摄像头结构示意图

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/141931518 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

成功之路:如何获得机器学习和数据科学实习机会

一年内获得两份实习机会的数据科学家的建议和技巧 欢迎来到雲闪世界。在当今竞争激烈的就业市场中&#xff0c;获得数据科学实习机会可以成为您在科技领域取得成功的门票。 但申请者如此之多&#xff0c;你该如何脱颖而出呢&#xff1f; 无论您是学生、应届毕业生还是想要转行…