【STM32单片机_(HAL库)】3-3【中断EXTI】使用SysTick模拟多线程

news2024/11/16 9:31:14

1.硬件

  • STM32单片机最小系统

  • LED灯模块
    硬件接线

STM32LED1LED2
PB8负极
PB9负极
5V5V5V

2.软件

  • led、tasks驱动文件添加
  • GPIO常用函数
  • main.c程序
#include "sys.h"
#include "delay.h"
#include "led.h"
#include "tasks.h"

int main(void)
{
    HAL_Init();                         /* 初始化HAL库 */
    stm32_clock_init(RCC_PLL_MUL9);     /* 设置时钟, 72Mhz */
    led_init();                         /* 初始化LED灯 */

    while(1)
    { 
        task1();
        task2();
//        led1_on();
//        led2_off();
//        delay_ms(500);
//        led1_off();
//        led2_on();
//        delay_ms(500);
    }
}

  • tasks.c程序
#include "tasks.h"
#include "led.h"

uint32_t task1_cnt = 0;
uint32_t task2_cnt = 0;

uint8_t task1_flag = 0;
uint8_t task2_flag = 0;

void systick_isr(void)
{
    if (task1_cnt < 1000)
        task1_cnt++;
    else
    {
        task1_flag = 1;
        task1_cnt = 0;
    }

    if (task2_cnt < 500)
        task2_cnt++;
    else
    {
        task2_flag = 1;
        task2_cnt = 0;
    }
}

void task1(void)
{
    if(task1_flag == 0)
        return;
    
    task1_flag = 0;
    
    led1_toggle();
}

void task2(void)
{
    if(task2_flag == 0)
        return;
    
    task2_flag = 0;
    
    led2_toggle();
}

  • tasks.h程序
#ifndef __TASKS_H__
#define __TASKS_H__

#include "sys.h"

void systick_isr(void);
void task1(void);
void task2(void);

#endif

3.实物效果

LED1以1000ms闪烁,LED2以500ms闪烁,实现流水灯效果。
ST-Link下载方式
在这里插入图片描述
在这里插入图片描述

电动车报警器项目keil源文件

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

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

相关文章

.NET HandyControl 深度解析:一个现代化的UI控件库

文章目录 前言一、选择HandyControl的原因二、如何使用HandyControl1.安装HandyControl2.使用代码例子 总结 前言 在.NET开发领域&#xff0c;UI&#xff08;用户界面&#xff09;设计的美观性和易用性对于应用程序的成功至关重要。为了帮助开发者快速构建现代化、美观且用户友…

日常避坑指南:重试装饰器的正确使用方式

在日常开发中,重试机制是提高代码健壮性的重要手段之一,尤其是在处理网络请求时,遇到超时或临时性错误的情况并不少见。通过重试,我们可以在一定程度上降低这些临时问题带来的影响。然而,如果使用不当,重试机制本身也可能引发新的问题,甚至让问题更加难以排查。 问题背…

Framework | Android语音识别框架与语音交互概览

Framework | Android语音识别框架与语音交互概览 随着智能设备的普及,语音识别与语音交互技术在现代生活中扮演着越来越重要的角色。无论是在驾驶场景中解放用户的双手,还是在智能家居中通过语音控制设备,语音技术的应用场景已经深入到各个领域。本文将深入探讨Android平台…

Live800:数字化转型下的客户服务新生态

在数字化转型的浪潮中&#xff0c;企业客户服务领域正经历着前所未有的变革。数字技术如大数据、云计算、人工智能和物联网等&#xff0c;不仅重塑了企业的运营模式&#xff0c;更深刻地改变了客户服务的面貌&#xff0c;构建了一个全新的客户服务生态。 一、数字化转型的驱动力…

在docker中安装skywalking + es

ES的版本和官网 es版本&#xff1a; Past Releases of Elastic Stack Software | Elastic es版本logstash版本JDK版本对应关系 支持一览表 | Elastic skywalking的版本说明和官网 Advanced deployment | Apache SkyWalking skywalking和es的对应关系&#xff0c;在网页的…

实训第三十二天(学习playbook-roles,脚本创建数据库和表,mycat读写分离)

1、roles&#xff08;角色&#xff09;介绍 roles(⻆⾊): 就是通过分别将variables, tasks及handlers等放置于单独 的⽬录中,并可以便捷地调⽤它们的⼀种机制。 假设我们要写⼀个playbook来安装管理lamp环境&#xff0c;那么这个 playbook就会写很⻓。所以我们希望把这个很⼤的…

Native开发与逆向第二篇 - 动态注册函数逆向

ida静态分析 示例app是网上找的一个杀毒软件&#xff0c;做安全的app防护应该是OK的。 直接找到JNI_OnLoad 类名没处理&#xff0c;直接是明文。 jint JNI_OnLoad(JavaVM *vm, void *reserved) {jint v2; // w19__int64 v4; // [xsp0h] [xbp-30h] BYREFqword_25148 vm;if ( …

全免费的数据恢复工具推荐!这几个不容错过!

不小心的数据丢失总会带来许多困扰&#xff0c;不过这些困扰也能通过一些全免费的数据恢复工具解决。接下来&#xff0c;就来给大家介绍几款好用的数据恢复工具&#xff01; 第一款&#xff1a;福昕数据恢复 直达链接&#xff1a;www.pdf365.cn/foxit-restore/ 福昕数据恢复…

6.2K star!推荐一款开源混沌工程测试平台:Chaos Mesh

1、Chaos Mesh 介绍 Chaos Mesh是一个开源的混沌工程平台&#xff0c;旨在帮助用户在生产环境中测试、验证和优化其应用程序的可靠性和稳定性。通过引入故障注入和混沌工程原则&#xff0c;Chaos Mesh可以模拟各种故障场景&#xff0c;如网络延迟、节点故障、磁盘故障等&#…

【spring】学习笔记1:starter和application

https://spring.io/toolsSpring Boot Extension Pack vs版本 使用Spring Tool Suite初始化Spring项目

如何将本地的hexo博客部署到云服务器

云服务器系统&#xff1a;centos 7 本地电脑 mac 第一步&#xff1a; 初始化Hexo博客 npm install hexo-cli -g hexo init HexoBlog 注意node版本需要16以上 cd HexoBlog hexo server访问地址localhost:4000 云服务器执行以下操作 配置的ssh访问用户 useradd git passw…

知网硕士论文稿酬领取方式

目录 知网硕士论文稿酬领取方式: 建议:版税制付酬 版税 知网 学位年度2008年(含2008年)以后的稿酬标准 知网硕士论文稿酬领取方式: 建议:版税制付酬 你怎么能把自己看死了,以后有大用。 中国知网是由清华大学、清华同方发起,始建于1999年6月,是以实现全社会知识…

一文300字从0到1使用Postman轻松搞定文件上传测试!

postman经常用于接口测试&#xff0c;但是上传文件参数还是蛮复杂的&#xff0c;记录下过程 01、上传文件参数 1.选择请求方式 选择post请求方式&#xff0c;输入请求地址 2.填写Headers Key&#xff1a;Content-Type &#xff1b; Value&#xff1a;multipart/form-data …

【数学建模】层次分析法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。前言 – 人工智能教程 在数学建模问题求解中什么时候用到层次分析法 在数学建模问题求解中&#xff0c;层次分析法&#xff08;Analytic…

Python进阶04-网络编程

零、文章目录 Python进阶04-网络编程 1、计算机网络 网络相关知识请参考计算机网络详解 &#xff08;1&#xff09;IP地址的概念 IP 地址就是标识网络中设备的一个地址&#xff0c;好比现实生活中的家庭地址。 &#xff08;2&#xff09;IP地址的表现形式 IP 地址分为两类…

ArcGIS栅格裁剪与合并,制作等高线

1、下载高程数据&#xff08;DEM&#xff09; https://mp.weixin.qq.com/s/ewlUUVV0PwdcspPGtSdCog 项目区域对应的卫片&#xff0c;也可以在谷歌地图里看大致经纬度范围 2、项目区域 确定项目区域&#xff0c;例如某个县区范围 3、栅格裁剪与合并 将DEM多个栅格数据合并&#…

《黑神话:悟空》惊世背后,AI 究竟如何铸就数字人神话?

在游戏的广袤世界中&#xff0c;每一部新作的问世皆如一次扣人心弦的探险之旅。而《黑神话&#xff1a;悟空》的惊艳登场&#xff0c;无疑是一场震撼灵魂的奇幻冒险。它象征着中国游戏产业的一次石破天惊的飞跃&#xff0c;更是 AI 技术在游戏制作领域应用的杰出典范。 AI时代已…

【Pytorch】生成对抗网络实战

GAN框架基于两个模型的竞争&#xff0c;Generator生成器和Discriminator鉴别器。生成器生成假图像&#xff0c;鉴别器则尝试从假图像中识别真实的图像。作为这种竞争的结果&#xff0c;生成器将生成更好看的假图像&#xff0c;而鉴别器将更好地识别它们。 目录 创建数据集 定…

改变潜意识,让梦想照进现实

你是否经常感到困惑&#xff0c;为何努力不得其果&#xff1f;今天我们将一起探索如何通过重新规划潜意识&#xff0c;让你的内心世界和外在行动达到和谐统一&#xff0c;让潜意识成为你坚不可摧的后盾。 想象一下&#xff0c;如果你的潜意识全天候无休止地为你的梦想努力&…

故障电弧探测器在工业与民用建筑电气线路中的设计与应用

安科瑞徐赟杰 【摘要】&#xff1a;电气设备是建筑中不可缺少的一部分&#xff0c;具有较为重要的作用和意义&#xff0c;在应用过程中不仅能够提升建筑本身实用性能&#xff0c;而且可为消费者提供更加优良的生活环境。但设备一旦在运行过程中出现故障&#xff0c;不仅会影响…