当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]你是否好奇过微控制器如何同时处理多个任务?本项目展示了STM32F407ZGT6 RT-Spark开发板上定时器中断和任务调度的工作原理。两个定时器以不同的频率闪烁LED,而按钮中断则在按下时立即响应——所有这些功能都通过一个简单的前台/后台系统协同运行。

你是否好奇过微控制器如何同时处理多个任务?本项目展示了STM32F407ZGT6 RT-Spark开发板上定时器中断和任务调度的工作原理。两个定时器以不同的频率闪烁LED,而按钮中断则在按下时立即响应——所有这些功能都通过一个简单的前台/后台系统协同运行。

硬件设置

该项目使用基于STM32F407ZGT6微控制器的RT-Spark开发板。两个内置LED连接到PF11(红色)和PF12(蓝色)引脚,一个用户按钮连接到PA0,PE0引脚设置为调试引脚,用于定时测量。

软件架构

系统采用前景/后台架构。定时器中断以中断服务例程(ISRs)的形式在后台运行,当任务就绪时会设置标志位。前台的主循环检查这些标志位,并执行相应的任务。TIM2 以最高优先级以 1Hz 运行,TIM3 以中等优先级以 2Hz 运行,而三个中断中按钮 EXTI 中断的优先级最低。

实施

TIM2 和 TIM3 在 STM32CubeMX 中通过设置各自的预分频器和自动重载值来实现目标频率。HAL_TIM_PeriodElapsedCallback 函数负责处理两个定时器的中断,切换 LED 以及设置任务标志。主循环在 TIM2 触发时执行任务 A,在 TIM3 触发时执行任务 B,并周期性地运行一次 10 秒的检查任务 C。当 PA0 上的按钮中断被触发时,按下按钮会立即切换两个 LED,演示了基于事件的响应机制。

结果

这段视频展示了RT-Spark板的实际运行情况——红色和蓝色LED灯通过定时器中断以不同频率闪烁,当按钮被按下时,两个LED灯会立即切换。

时间测量

观察

在测试期间,红色LED由TIM2触发每1秒闪烁一次,而蓝色LED由TIM3触发每0.5秒闪烁一次。当用户按钮被按下时,两个LED都会立即响应,确认外部中断功能正常。每当定时器标志被设置时,前台任务都能正确执行。

分析

测量到的 TLatency 为 24.94 微秒,表明中断触发与任务开始之间存在较小的延迟。TISR 为 4.31 微秒,证实中断服务程序(ISR)执行非常迅速。总响应时间为 50.02443 毫秒,接近预期的 50 毫秒任务延迟。当所有任务同时运行时,最坏情况下的响应时间可达 120 毫秒。使用抢占式调度程序可显著降低该延迟,因为高优先级任务可以立即运行,无需等待其他任务完成。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

该项目是一个简单的人体反应计时器,使用RT-Spark开发板和STM32F407ZGT6微控制器构建而成。它用于测量当RGB LED亮起时,人能多快做出反应。

关键字: 微控制器 开发板 LED STM32F407ZGT6

我制作了一个人类反应计时器,用来精确测量一个人对灯光亮起的反应速度。电路板会点亮内置的RGB LED灯,我的任务是尽可能快地按下板上的按钮(SW1)。

关键字: LED 电路板 示波器

引言:微控制器广泛应用于嵌入式系统中,用于控制输入和输出设备。GPIO引脚使微控制器能够与所使用的外部硬件进行通信,例如开关按钮、LED灯和显示屏(LCD)。

关键字: 微控制器 嵌入式系统 LED

该项目是一个基于微控制器的C语言编写的音频生成器,配备三个按钮,用户可通过按钮播放声音或调节音高。它作为基本GPIO控制和按钮逻辑的实际演示。

关键字: 微控制器 C语言 音频生成器 STM32F407ZGT6

这是我对硬件与电子世界的入门介绍。Arduino UNO上的GPIO引脚(D0 - D13)用于控制连接到它们的元件,这里就是LED灯。通过编写代码,可以产生电信号来控制LED灯的开关。

关键字: LED 面包板 GPIO引脚 Arduino UNO

本项目详细介绍了采用离散模拟和功率电子元件构建的自动应急备用LED照明系统。该电路将环境光感应与自动双电源切换(交流电源 + 3.7V 18650锂离子电池备用)无缝结合。

关键字: LED 功率电子 二极管 LM7805

我有一台M5Stack AtomS3R,放在一个盒子里。它是一个24×24×27毫米的立方体,前面玻璃后面是ESP32-S3芯片,128×128像素的显示屏,整个正面都是一块按钮。内置BMI270六轴IMU和8MB的PS...

关键字: LED 显示器 ESP32-S3

空气质量问题不仅限于户外,室内空间也可能积聚挥发性有机化合物(VOCs)、二氧化碳(CO₂)和污染物,影响健康与工作效率。本项目将XIAO RP2040和ENS160传感器改造为一款桌面型空气质量监测仪。设备内置一个JU...

关键字: 传感器 LED XIAO RP2040

在本节中,您将学习如何通过Python应用程序,使用UART串行通信协议,将独立的微控制器(如8051(AT89S51或W78E052DDG)、MSP430或PIC16F系列)与PC连接并进行数据交换。

关键字: 微控制器 Python 串行通信 ATmega328P

火焰无声,但我们可以通过简单的电子元件为它们“装上耳朵”!这个DIY火灾报警器项目利用红外接收传感器检测火光辐射,并立即触发声音(蜂鸣器)和视觉(LED)报警。该电路以13009 NPN晶体管作为主开关,结构简单、可靠且...

关键字: 蜂鸣器 LED 传感器 1N4007二极管
关闭