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

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

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源文件

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据结构(树、平衡树、红黑树)
  • 深入理解 XSS 漏洞:原理、危害与防范
  • MATSUSADA松定电源 直流电源维修PK350-1.1
  • Linux上启动redis
  • Ps:首选项
  • ISIS路由渗透
  • Socket【网络】
  • 主控
  • Avalonia 播放 VLC 视频(Windows / Linux)
  • 知识竞赛活动中的一些新颖特殊的赛制
  • 推荐4款2024年专业的电脑远程控制软件。
  • web会话跟踪-token令牌与路由守卫
  • 在 Debian 上安装 IntelliJ IDEA 笔记(含 JDK 的安装)
  • 中秋节适合买什么东西?精选五款实用又有意义的中秋好物推荐
  • SQL 注入之 sqlmap 实战
  • 【附node操作实例】redis简明入门系列—字符串类型
  • C++入门教程(10):for 语句
  • CEF与代理
  • C学习-枚举(九)
  • Java 网络编程(2):UDP 的使用
  • Java超时控制的实现
  • MD5加密原理解析及OC版原理实现
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • Octave 入门
  • Rancher如何对接Ceph-RBD块存储
  • vue.js框架原理浅析
  • 高度不固定时垂直居中
  • 汉诺塔算法
  • 基于 Babel 的 npm 包最小化设置
  • 深度学习入门:10门免费线上课程推荐
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 最近的计划
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • (06)金属布线——为半导体注入生命的连接
  • (42)STM32——LCD显示屏实验笔记
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (备忘)Java Map 遍历
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (三十五)大数据实战——Superset可视化平台搭建
  • (转)Windows2003安全设置/维护
  • .NET : 在VS2008中计算代码度量值
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .net 按比例显示图片的缩略图
  • .net反混淆脱壳工具de4dot的使用
  • .NET文档生成工具ADB使用图文教程
  • .NET中使用Redis (二)
  • //usr/lib/libgdal.so.20:对‘sqlite3_column_table_name’未定义的引用
  • ?php echo ?,?php echo Hello world!;?
  • [ Python ]使用Charles对Python程序发出的Get与Post请求抓包-解决Python程序报错问题
  • [1159]adb判断手机屏幕状态并点亮屏幕
  • [2013AAA]On a fractional nonlinear hyperbolic equation arising from relative theory
  • [20150707]外部表与rowid.txt
  • [2024-06]-[大模型]-[Ollama] 0-相关命令