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

[STM32学习笔记(九)]CubeMX项目使用系统定时器SysTick的中断服务函数进行定时

有很多文章说明了由于HAL_Delay()函数的本质是系统定时器计数,通过全局变量uwTick的不断增加实现的比较延迟。调用HAL_Delay()函数会阻塞其他工作,因此在外设ISR进程调用该延迟时,要特别小心。
因此,现在考虑,既然系统定时器会固定产生中断,那是否可以通过在系统定时器的中断回调函数中设置一个标志位实现定时
在网上还没有基于CubeMX生成的项目实现定时功能,当然后续工作更多定时会通过其他通用定时器实现,这篇文章仅供学习参考

CubeMX设置

RCC、SYS、LED_GPIO和时钟树不再叙述,这里只看系统定时器。这里的抢占优先级设置为3,原来默认为15,不是很有问题。
在这里插入图片描述

在这里插入图片描述

Keil代码

首先要找到系统定时器中断服务函数,会发现其并没有直接调用HAL库函数。而是SysTick_Handler函数,里面只调用了一个HAL_IncTick()函数。
HAL库 中的系统中断服务函数为HAL_SYSTICK_IRQHandler(),需要手动添加到SysTick_Handler()中,并且重写中断回调函数HAL_SYSTICK_Callback()
在这里插入图片描述

其他关键代码

main.h
在这里插入图片描述
main.c
在这里插入图片描述
在这里插入图片描述
最后编译通过即可,主要功能是每秒翻转一次连接LED的GPIO的电平,实现1s亮1s灭,但不是通过延迟函数得到,而是通过状态标志位实现。

http://www.lryc.cn/news/2393934.html

相关文章:

  • 5G 核心网 NGAP UE-TNL 偶联和绑定
  • 性能测试怎么做?方法、流程与核心要点解析
  • 将ipynb文件转换为markdown格式文件
  • Vulnhub_Zico2_wp
  • 【玩转腾讯混元大模型】腾讯混元大模型AIGC系列产品深度体验
  • 品优购项目(HTML\CSS)
  • Attention Is All You Need论文阅读笔记
  • 深入理解设计模式之中介者模式
  • OpenCV 图像像素的读写操作
  • 【前端】【Vue3】vue3性能优化总结
  • 如何制作全景VR图?
  • 动态防御新纪元:AI如何重构DDoS攻防成本格局
  • 汽车软件刷写 APP SBL PBL概念
  • 自动化中的伦理:驯服人工智能中的偏见与守护合规之路
  • Flask与PostgreSQL交互教程
  • XJTU-SY轴承振动数据集的json自封装
  • Spring AI 系列2: Advisors增强器简介
  • 通过Func实现飞书应用通知消息加急处理
  • 【目标检测】【AAAI-2022】Anchor DETR
  • Spring Cloud Alibaba 学习 —— 简单了解常用技术栈
  • 智慧工厂整体解决方案
  • 秋招Day12 - 计算机网络 - TCP
  • KubeMQ 深度实践:构建可扩展的 LLM 中台架构
  • vueflow
  • LearnOpenGL-笔记-其十一
  • @Docker Compose 部署 Prometheus
  • openppp2 -- 1.0.0.25225 优化多线接入运营商路由调配
  • 二次封装 Vuex for Uniapp 微信小程序开发
  • 详细到用手撕transformer下半部分
  • Spring Boot 整合 Spring Data JPA、strategy 的策略区别、什么是 Spring Data JPA