当前位置: 首页 > news >正文

STM32利用FreeRTOS实现4个led灯同时以不同的频率闪烁

在没有接触到FreeRTOS时,也没有想过同时叫两个或两个以上的led灯闪烁的想法,接触后,发现如果想叫两个灯同时以不同的频率闪烁,不能说是不可能,就算是做到了也要非常的麻烦。但是学习了FreeRTOS后,发现要想同时执行几个函数还是很简单的一件事,虽然CPU是单核心的,这就好比是电脑编程中的多线程,这个函数执行1毫秒,那个函数执行1毫秒,就这样不停地切换,由于切换的速度相当的快,给人的感觉就是这几个函数在同时执行。我们编程中难免会遇到这种需要同时运行的函数,所以学习一下FreeRTOS还是很有必要的。

好了,说了这么多,把我今天的结果展示一下吧:

图片中的A0到A3端口的led灯在以不同的频率闪烁。

下面把代码贴出来看看吧:

main.c文件:

#include "stm32f10x.h"                  // Device header
#include "led.h"
#include "freertos.h"
#include "task.h"void Mytask0( void * arg)   //任务0函数
{while(1)                       //所干的事就是死循环{FANZHUAN0;                     //翻转A0端口电平vTaskDelay(40);                //延时40毫秒   }                             //整个函数就是控制A0端口的led灯以40毫秒的间隔不停的闪烁
}void Mytask1( void * arg)       //任务1函数
{while(1){FANZHUAN1;vTaskDelay(140);}                           // 整个函数就是控制A1端口的led灯以140毫秒的间隔不停的闪烁
}void Mytask2( void * arg)       //任务2函数
{while(1){FANZHUAN2;vTaskDelay(400);}                         // 整个函数就是控制A2端口的led灯以400毫秒的间隔不停的闪烁
}void Mytask3( void * arg)     //任务3函数
{while(1){FANZHUAN3;vTaskDelay(800);}                           // 整个函数就是控制A3端口的led灯以800毫秒的间隔不停的闪烁
}TaskHandle_t TaskHandle_t0;            //创建任务0所需要的任务句柄变量
TaskHandle_t TaskHandle_t1;            //创建任务1所需要的任务句柄变量
TaskHandle_t TaskHandle_t2;            //创建任务2所需要的任务句柄变量
TaskHandle_t TaskHandle_t3;            //创建任务3所需要的任务句柄变量int main(void)
{LED_Init();           //初始化led配置xTaskCreate(Mytask0, "Mytask0", 120, NULL, 1, &TaskHandle_t0);  //创建任务0(任务0函数名, 任务字符串, 堆栈大小随便,任务参数, 优先级, 任务句柄地址)xTaskCreate(Mytask1, "Mytask1", 120, NULL, 2, &TaskHandle_t1);  //创建任务1(任务0函数名, 任务字符串, 堆栈大小随便,任务参数, 优先级, 任务句柄地址)xTaskCreate(Mytask2, "Mytask2", 120, NULL, 3, &TaskHandle_t2);  //创建任务2(任务0函数名, 任务字符串, 堆栈大小随便,任务参数, 优先级, 任务句柄地址)xTaskCreate(Mytask3, "Mytask3", 120, NULL, 4, &TaskHandle_t3);  //创建任务3(任务0函数名, 任务字符串, 堆栈大小随便,任务参数, 优先级, 任务句柄地址)vTaskStartScheduler();   //开启调度器}

led.h文件:

#ifndef __LED_H
#define __LED_H#include "stm32f10x.h"                  // Device header#define GPIOx                GPIOA
#define GPIO_PIN             GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3
#define GPIO_CLK             RCC_APB2Periph_GPIOA#define ON                   1
#define OFF                  0#define LED(x)               if(x)\GPIO_ResetBits(GPIOx, GPIO_PIN);\else \GPIO_SetBits(GPIOx, GPIO_PIN);#define FANZHUAN0              {GPIOx->ODR ^= GPIO_Pin_0;}
#define FANZHUAN1              {GPIOx->ODR ^= GPIO_Pin_1;}
#define FANZHUAN2              {GPIOx->ODR ^= GPIO_Pin_2;}
#define FANZHUAN3              {GPIOx->ODR ^= GPIO_Pin_3;}void LED_Init(void);#endif

led.c文件:

#include "led.h"                  // Device headervoid LED_Init(void)
{RCC_APB2PeriphClockCmd(GPIO_CLK, ENABLE);GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_Pin = GPIO_PIN;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOx, &GPIO_InitStruct);}

FreeRTOS的代码,太多了,我就不都贴出来了,前面我写过一篇这样的文章,不懂的可以往前自己找找。这个工程创建好了,就不用每次都创建了,每次赋值粘贴重命名就好了,还是很省事的啊!

相关文章:

STM32利用FreeRTOS实现4个led灯同时以不同的频率闪烁

在没有接触到FreeRTOS时,也没有想过同时叫两个或两个以上的led灯闪烁的想法,接触后,发现如果想叫两个灯同时以不同的频率闪烁,不能说是不可能,就算是做到了也要非常的麻烦。但是学习了FreeRTOS后,发现要想同…...

深入Laravel事件系统:创建与使用事件的指南

Laravel的事件系统是一种强大的机制,它允许你将应用程序的行为封装成事件,然后在适当的时候触发这些事件。这不仅有助于代码的解耦,还提高了应用程序的可维护性和可扩展性。本文将详细介绍如何在Laravel中创建和使用事件,包括事件…...

element-ui操作表格行内容如何获取当前行索引?

需求&#xff1a; 根据每个用户的提交次数、撤回次数&#xff0c;动态计算出实际次数&#xff0c;并且提交次数不能小于撤回次数 <template><div><el-table:data"tableData"style"width: 80%"border><el-table-columnprop"date&…...

代发考生战报:南京考场华为售前HCSP H19-411考试通过

代发考生战报&#xff1a;南京考场华为售前HCSP H19-411考试通过&#xff0c;客服给的题库非常稳定&#xff0c;考试遇到2个新题&#xff0c;剩下全是题库里的原题&#xff0c;想考的放心考吧&#xff0c;考场服务挺好&#xff0c;管理员带着做签名和一些考试说明介绍清楚&…...

【Spring Boot】Spring原理:Bean的作用域和生命周期

目录 Spring原理一. 知识回顾1.1 回顾Spring IOC1.2 回顾Spring DI1.3 回顾如何获取对象 二. Bean的作用域三. Bean的生命周期 Spring原理 一. 知识回顾 在之前IOC/DI的学习中我们也用到了Bean对象&#xff0c;现在先来回顾一下IOC/DI的知识吧&#xff01; 首先Spring IOC&am…...

MinIO:开源对象存储解决方案的领先者

MinIO:开源对象存储解决方案的领先者 MinIO 是一款开源的对象存储系统&#xff0c;致力于提供高性能、可伸缩、安全的数据存储解决方案。 官方解释&#xff1a;MinIO 是一个基于Apache License v2。0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口&#xff0c;非常适…...

15、电科院FTU检测标准学习笔记-基本性能

作者简介&#xff1a; 本人从事电力系统多年&#xff0c;岗位包含研发&#xff0c;测试&#xff0c;工程等&#xff0c;具有丰富的经验 在配电自动化验收测试以及电科院测试中&#xff0c;本人全程参与&#xff0c;积累了不少现场的经验 ———————————————————…...

古建筑倾斜在线监测系统:科技守护历史的创新实践

​ ​​在文化遗产保护的广阔领域中&#xff0c;古建筑的健康监测占据着举足轻重的地位。然而&#xff0c;传统的监测方法往往受限于布线复杂、安装难度大以及对古建筑本体可能造成的伤害等问题。近年来&#xff0c;一种新型的古建筑倾斜在线监测系统应运而生&#xff0c;它…...

DP(2) | Java | LeetCode 62, 63, 343, 96 做题总结(96 未完)

62.不同路径 我的代码&#xff08;报错&#xff09; 写的过程中感到很迷惑的点&#xff1a;①二维数组和这道题目的对应弄不清除&#xff0c;m n的初始化 是 dp[m][n] 还是 dp[n][m] ② class Solution {public int uniquePaths(int m, int n) {int[][]dp new int[m1][n1];d…...

Ubuntu实战续篇:Apache httpd轻松搭建高效代理服务器

Ubuntu实战续篇&#xff1a;Apache httpd轻松搭建高效代理服务器 一、前言二、Ubuntu下的Apache配置文件概览三、配置并启用 Apache 代理服务 作者&#xff1a;高玉涵 时间&#xff1a;2024.7.11 21:06 博客&#xff1a;blog.csdn.net/cg_i 环境&#xff1a;Ubuntu 22.04.4 LTS…...

Linux 程序卡死的特殊处理

一、前言 Linux环境。 我们在日常编写的程序中&#xff0c;可能会出现一些细节问题&#xff0c;导致程序卡死&#xff0c;即程序没法正常运行&#xff0c;界面卡住&#xff0c;也不会闪退... 当这种问题出现在客户现场&#xff0c;那就是大问题了。。。 当我们暂时还无法排…...

(C++字符串02) 反转字符串中的单词

151、反转字符串中的单词 先将字符串的里的多余空格去掉&#xff0c;时间复杂度:O(n)&#xff0c;再将字符串整体反转&#xff0c;时间复杂度:O(n)&#xff0c;最后反转每一个单词&#xff0c;时间复杂度:O(n)&#xff1b; class Solution { public:string reverseWords(stri…...

一致性Hash问题及解决方案

Hash算法的应用场景 请求的负载均衡 Nginx的ip_hash策略可以在客户端ip不发生变化的情况下&#xff0c;将其发出的请求始终路由到同一个目标服务器上&#xff0c;实现会话粘滞&#xff0c;避免处理session共享问题。 如果没有ip_hash策略&#xff0c;可以通过维护一张映射表的…...

【接口设计】如何设计统一 RESTful 风格的数据接口

如何设计统一 RESTful 风格的数据接口 1.版本控制1.1 通过 URL1.2 通过自定义请求头1.3 通过 Accept 标头 2.过滤信息3.确定 HTTP 的方法4.确定 HTTP 的返回状态5.定义统一返回的格式 近年来&#xff0c;随着移动互联网的发展&#xff0c;各种类型的客户端层出不穷。如果不统一…...

【备战秋招】——算法题目训练和总结day3

【备战秋招】——算法题目训练和总结day3&#x1f60e; 前言&#x1f64c;BC149简写单词题解思路分析代码分享&#xff1a; dd爱框框题解思路分析代码分享&#xff1a; 除2&#xff01;题解思路分析代码分享&#xff1a; 总结撒花&#x1f49e; &#x1f60e;博客昵称&#xff…...

Git 操作总结

1. 安装、Git 环境配置 1.1 安装 Git 官方版本可以在 Git 官方网站下载&#xff1a;打开 https://git-scm.com/download/win&#xff0c;选择相应版本即可。 Git 安装完成后&#xff0c;可以在开始菜单中看到 Git 的三个启动图标&#xff08;Git Bash、Git CMD、Git GUI&…...

若依 ruoyi-vue SpringBoot highlight-textarea 输入框敏感词关键词高亮标红(二)

参考文章&#xff0c;非常感谢大佬的分享 实现可高亮的输入框 — HighlightTextarea GitHub:highlight-textarea 可看作者上一篇文章 若依 ruoyi-vue SpringBoot聊天敏感词过滤sensitive-word&#xff08;一&#xff09; 效果图 审核时&#xff0c;输入框高亮敏感词&#xff…...

33 IRF配置思路

IRF配置思路网络括谱图 主 Ten-GigabitEthernet 1/0/49 Ten-GigabitEthernet 1/0/50 Ten-GigabitEthernet 1/0/51 备 Ten-GigabitEthernet 2/0/49 Ten-GigabitEthernet 2/0/50 Ten-GigabitEthernet 2/0/51 思路 主 1 利用console线进入设备的命令行页面去更改…...

Dify中的RAG和知识库

一.RAG 基本架构 当用户提问 “美国总统是谁&#xff1f;” 时&#xff0c;系统并不是将问题直接交给大模型来回答&#xff0c;而是先将用户问题在知识库中进行向量搜索&#xff0c;通过语义相似度匹配的方式查询到相关的内容&#xff08;拜登是美国现任第46届总统…&#xff0…...

vue3 + i18n 中英文切换

第一步&#xff1a;安装vue-i18n npm install vue-i18n 第二步&#xff1a;配置语言包及js文件 目录如下&#xff1a; 英文语言包 en.js // lang/en.js - 英文语言包 export default {menu: { 库房管理: Warehouse Management,入库检测: Incoming Inspection, 设…...

如何通过LCU API构建现代化英雄联盟工具箱:从技术选型到实战应用

如何通过LCU API构建现代化英雄联盟工具箱&#xff1a;从技术选型到实战应用 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 想象一下这样的场…...

终极指南:如何轻松提取Xbox Game Pass游戏存档,实现跨平台无缝迁移

终极指南&#xff1a;如何轻松提取Xbox Game Pass游戏存档&#xff0c;实现跨平台无缝迁移 【免费下载链接】XGP-save-extractor Python script to extract savefiles out of Xbox Game Pass for PC games 项目地址: https://gitcode.com/gh_mirrors/xg/XGP-save-extractor …...

API的工作原理和机制

问题&#xff1a;API的工作原理和机制是什么&#xff1f; 这是一个技术解释类问题&#xff0c;需要清晰、系统地拆解。希望“深入”&#xff0c;所以不能停留在表面定义&#xff0c;需要从核心概念、交互模型、关键机制&#xff08;如协议、端点、请求响应结构、认证、状态等&…...

万兆光模块:网络提速的核心引擎

在数字化转型的浪潮中&#xff0c;数据已成为核心生产要素&#xff0c;而连接数据的网络&#xff0c;则是决定其流动速度与效率的关键。当我们沉浸在4K/8K的视觉盛宴中&#xff0c;惊叹于云游戏的即时交互&#xff0c;或是受益于远程医疗的精准诊断时&#xff0c;背后都离不开一…...

NVIDIA显卡隐藏功能终极解锁:10个性能调校技巧完全指南

NVIDIA显卡隐藏功能终极解锁&#xff1a;10个性能调校技巧完全指南 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 想让你的NVIDIA显卡发挥出全部潜能吗&#xff1f;NVIDIA Profile Inspector这款强大的…...

Llama-3.2V-11B-cot 安全与合规指南:避免生成有害内容的过滤策略

Llama-3.2V-11B-cot 安全与合规指南&#xff1a;避免生成有害内容的过滤策略 最近在帮一个朋友部署一个基于视觉大模型的应用&#xff0c;他兴奋地给我展示各种有趣的图文对话功能。聊着聊着&#xff0c;他突然问了一个很实际的问题&#xff1a;“这玩意儿要是用户上传一张不合…...

OpenClaw技能市场探秘:千问3.5-9B驱动10种办公自动化

OpenClaw技能市场探秘&#xff1a;千问3.5-9B驱动10种办公自动化 1. 为什么需要技能市场&#xff1f; 去年我接手了一个新项目&#xff0c;每天要处理上百封邮件、整理会议录音、生成周报数据。这些重复性工作占据了我60%的工作时间&#xff0c;直到我发现了OpenClaw的技能市…...

万象视界灵坛部署案例:阿里云ECS GPU实例一键拉起Omni-Vision Sanctuary服务

万象视界灵坛部署案例&#xff1a;阿里云ECS GPU实例一键拉起Omni-Vision Sanctuary服务 1. 项目概述 万象视界灵坛&#xff08;Omni-Vision Sanctuary&#xff09;是一款基于OpenAI CLIP技术的高级多模态智能感知平台。这个创新性的解决方案将复杂的视觉识别任务转化为直观、…...

Phi-3-mini-4k-instruct-gguf惊艳生成效果:5类中文任务(问答/改写/总结/建议/介绍)实测

Phi-3-mini-4k-instruct-gguf惊艳生成效果&#xff1a;5类中文任务实测 1. 模型介绍与测试背景 Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本。这个模型特别适合处理中文的问答、文本改写、摘要整理和简短创作等任务。相比大型语言模型&#x…...

墨语灵犀网络安全知识库:基于AI的威胁情报分析与解读

墨语灵犀网络安全知识库&#xff1a;让AI成为你的安全分析师 最近和几个做安全运营的朋友聊天&#xff0c;他们都在抱怨同一件事&#xff1a;每天面对海量的安全告警和晦涩的漏洞报告&#xff0c;眼睛都快看花了。一份新的漏洞描述扔过来&#xff0c;光是理解它到底在说什么、…...