当前位置: 首页 > 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源文件


http://www.mrgr.cn/news/15544.html

相关文章:

  • iPhone通话纪录不见了怎么办?教你几招轻松找回
  • 如何将本地的hexo博客部署到云服务器
  • 开源模型应用落地-qwen2-7b-instruct-LoRA微调-ms-swift-单机单卡-V100(十二)
  • 突发性网络攻击的安全挑战分析
  • 【面试经验】秋招 美团优选策略产品经理一面
  • SD-WAN 跨国专线主要应用在哪些地方?
  • ThinkPHP数据库链式操作之field
  • Python计算sha256算法实现代码
  • npm报错信息集合——基础积累
  • 酒店管理系统小程序(包含源码C++实现)
  • Java的设计模式
  • Git分支与变基
  • 【GeoScenePortal】创建站点用户没有目前完全权限
  • 智能听诊器:宠物健康的科技守护者
  • HarmonyOS开发实战( Beta5版)Web组件开发性能提升指导
  • 软件架构的发展经历了从单体结构、垂直架构、SOA架构到微服务架构的过程剖析
  • redis能正常访问,但是springboot编译报错
  • MySQL5.7版本实现数据库审计功能
  • Android CCodec Codec2 (四)C2Param - Ⅱ
  • PHP付费心理测评小程序源码心理测试抑郁症性格测试H5变现系统源码