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

[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灭,但不是通过延迟函数得到,而是通过状态标志位实现。

相关文章:

  • 《计算机组成原理》第 1 章 - 计算机系统概论
  • DAY38打卡
  • Python PyMySQL
  • 嵌入式开发学习日志(linux系统编程--进程(3)——线程)Day29
  • Ubuntu20.04系统安装,使用系统盘安装
  • AD-PCB--电子设计学习思路 DAY 1
  • 通过HIVE SQL获取每个用户的最大连续登录时常
  • 0527漏洞原理:SQL注入笔记 SQL注入类型(联合查询注入、报错注入实操)
  • SQL Server 简介和与其它数据库对比
  • sqli-第三十二关——bypass addslashes
  • 一对多 多对一
  • SQL思路解析:窗口函数该如何使用?
  • LeetCode 高频 SQL 50 题(基础版)之 【连接】部分 · 上
  • 猿大师办公助手WebOffice用二进制数据流在Web前端打开Office文档
  • 二次封装 Vuex for Uniapp 微信小程序开发
  • npm error Cannot find module ‘negotiator‘ 的处理
  • Turf.js:前端地理空间分析的瑞士军刀
  • 网络编程3
  • 图论回溯
  • 【监控】Spring Boot 应用监控
  • 高新网站开发建设多少钱/百度推广没有一点效果
  • 做软装设计能用到的网站有哪些/seo内部优化包括哪些内容
  • 茂名手机网站建设公司名录/站长之家排行榜
  • 党建网站建设技术方案/百度网址
  • 济南网站建设公司制作/免费发广告的网站
  • 模拟wordpress/seo推广公司排名