MSPM0l1306——配置滴答定时器

         

我们配置好了滴答定时器之后,还要手动编写滴答定时器的中断服务函数,因为我们开启的滴答定时器的中断,当滴答定时器的计数值从我们设置的值减到0时,就会触发一次中断,触发中断就会执行中断服务函数。各个中断的中断服务函数名称已经被写死,不可修改,否则无法正常进入中断服务函数。关于中断服务函数的名称是什么,可以在工程的.s文件中找到各个中断的中断服务函数名称。

#include "ti_msp_dl_config.h"volatile unsigned int delay_times = 0;//搭配滴答定时器实现的精确ms延时
void delay_ms(unsigned int ms) 
{delay_times = ms;while( delay_times != 0 );
}        int main(void)
{   SYSCFG_DL_init();while (1) {}
}//滴答定时器中断服务函数
void SysTick_Handler(void)
{if( delay_times != 0 ){delay_times--;}
}

在C语言中,volatile 是一个关键字,用来告诉编译器不要对它所修饰的变量做任何优化,因为这个变量的值可能会随时被意想不到的因素改变,比如硬件中断、多线程操作等。volatile 告诉编译器不要将对这个变量的读写操作优化掉,每次访问都要从变量地址中读取或写入。在多线程或与硬件相关的编程中,volatile 经常用来声明那些程序之外其他实体可能会修改的变量,以确保每次访问都能获取最新的值,避免编译器优化导致的意想不到的问题。

以上代码中执行的逻辑为:开启了滴答定时器后,滴答定时器每隔1ms进入中断服务函数中,中断服务函数里一直判断变量 delay_times是否不为0,当不为0时将会一直自减到0。delay_ms()函数的执行效果就是改变变量delay_times的值,让它不为0,然后死等到变量delay_times为0则结束。因为有中断在不断的以1ms的时间间隔将变量delay_times 自减到0,这样我们的精确延时函数就写好了。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/850791.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter 中的 DropdownButtonHideUnderline 小部件:全面指南

Flutter 中的 DropdownButtonHideUnderline 小部件:全面指南 Flutter 是一个流行的开源移动 UI 框架,由 Google 开发,允许开发者使用单一的代码库构建高质量的 iOS 和 Android 应用。Flutter 提供了丰富的组件,其中 DropdownButt…

【Spring Boot】异常处理

异常处理 1.认识异常处理1.1 异常处理的必要性1.2 异常的分类1.3 如何处理异常1.3.1 捕获异常1.3.2 抛出异常1.3.4 自定义异常 1.4 Spring Boot 默认的异常处理 2.使用控制器通知3.自定义错误处理控制器3.1 自定义一个错误的处理控制器3.2 自定义业务异常类3.2.1 自定义异常类3…

树莓派 5 AI 套件(Hailo-8L)使用教程

系列文章目录 前言 The Raspberry Pi AI Kit Raspberry Pi AI 套件将 Raspberry Pi M.2 HAT 与 Hailo AI 加速模块捆绑在一起,供 Raspberry Pi 5 使用。套件包含以下内容: 包含神经处理单元(NPU)的 Hailo AI 模块Raspberry Pi M.…

STM32 proteus + STM32Cubemx仿真教程(第二课按键教程)

文章目录 前言一、STM32按键的原理二、STM32Cubemx创建工程三、proteus仿真电路图四、程序代码编写4.1函数介绍4.2使用按键点亮LED灯 总结 前言 本篇文章开始带大家学习如何使用proteus和STM32Cubemx来完成STM32的学习,第二节课我们先来学习按键的用法。 proteus使…

[docker] docker-compose-mysql.yml

引言:作为一名专业的资深开发,本地一定拥有了不少开源项目以供学习,每次都要去启动 mysql 数据库跟 redis 服务器,这种操作1.挺烦的,挺费时间,每次都要启动命令来一次;2.占用自己电脑的资源&…

五款软件推荐:U盘数据不小心删除了?帮你快速找回!

U盘数据不小心删除了怎么恢复?U盘是一种便携式存储设备,因其小巧轻便而广受欢迎。但是,U盘也常常会遇到数据丢失的问题。当U盘数据丢失时,需要找到一款可靠的数据恢复软件来恢复数据。 接下来为大家推荐5款好用的免费U盘数据恢复软…

Python 使用scrapy框架

1、安装scrapy 2、使用scrapy创建项目,在终端命令行 执行如下命令,会创建一个myproject项目 scrapy startproject myproject 3、创建完成后,目录结构如下 4、cd myproject进入项目 ,执行scrapy genspider weather ******,会在spiders下创建…

Incredibuild for Mac 来了!

Mac 开发者在寻找适合自己需求的工具时可能会遇到一些困难,因为 Mac 操作系统相对封闭,不像其他系统那样开放和灵活。尽管如此,Mac 开发者在开发应用程序时的需求(比如功能、效率等)和使用其他操作系统的开发者是类似的…

Linux中安装Docker,并使用Docker安装MySQL和Redis

1、安装docker 1卸载系统之前的docker yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine2、安装Docker-CE #安装必须的依赖 sudo yum install -y yum-utils \device-map…

LINUX----进程替换,exec族函数

execl族函数的作用 exel族函数用于调用一个已经存在的可执行程序,将该程序的运行需要的代码区和数据区的数据覆盖原进程,这样就可以实现在一个进程中调度另一个进程. 简单实现一个小功能来看一看 mytest.c #include <stdio.h> #include <unistd.h>int main(){print…

开源VS闭源

当我们谈论大模型时&#xff0c;往往会涉及到开源和闭源两种不同的模型类型&#xff0c;开源和闭源的主要区别在于源代码的访问权限和修改能力。开源意味着软件的源代码对公众开放&#xff0c;任何人都可以查看、修改和分发源代码&#xff0c;这促进了技术的透明性、合作和创新…

抽象的java入门1.3.0

前言&#xff1a; 在1.2.0版本中我们介绍了public class hello {}并从中提取出两个新概 修饰符和作用域 public class hello {public static void main(String[] args) {System.out.println("Hello World");} } 正片&#xff1a; 这一期把剩余的内容刨析出来 pub…

【Redis学习笔记04】Jedis客户端(上)

Java客户端操作Redis Java生态丰富&#xff0c;自定义的客户端非常多&#xff0c;常见的有Jedis、Lettuce、以及Spring整合后的RedisTemplate&#xff0c;但是对于初学者而言&#xff0c;从Jedis开始入门学习是非常容易上手的&#xff0c;因为Jedis中的API与原生Redis命令高度…

Android Bugreport分析工具:ChkBugReport教程

安装&#xff1a; 如果下载地址过期请看原仓库地址的wiki&#xff0c;或许会有更新&#xff1a;https://github.com/sonyxperiadev/ChkBugReport/wiki 提前下载好如下文件&#xff1a; ​​​​​​http://sonyxperiadev.github.io/ChkBugReport/download/chkbugreport (Lau…

Python中的上下文管理器(contextlib)模块

Python中的contextlib模块提供了一些用于创建和管理上下文管理器&#xff08;context managers&#xff09;的工具。上下文管理器是实现了__enter__()和__exit__()方法的对象&#xff0c;它们通常用于确保在代码块执行前后执行某些操作&#xff0c;比如资源获取与释放、设置和重…

一分钟有60秒,这个有趣的原因你知道吗?

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

string类的模拟实现的一些改进

上回我们完成了string类的模拟实现&#xff0c;不过之前写的传统写法本篇&#xff0c;我们将要对其进行一些改进&#xff0c;写成参考的是现代写法&#xff0c;这样写可以提高可读性。 上回我们写好的string类 //string.h #pragma once#define _CRT_SECURE_NO_WARNINGS 1 #p…

常见汇编指令

下面是一些包含汇编指令 MOV、PUSH、POP、LEA、LDS、ADD、ADC、INC、SUB、SBB、DEC、CMP、MUL、DIV、AND、OR、XOR、NOT、TEST、SHL、SAL、SHR、SAR、ROL、ROR、RCL、RCR、LODS、MOVS 的例题。这些例题展示了每条指令的用法及其作用。 1. MOV 指令 MOV AX, BX ; 将寄存器 B…

github stylesmile fastboot介绍

**Fastboot是一个极速的Java Web框架&#xff0c;旨在提供高效的启动速度和低内存占用**。 Fastboot的设计理念是为了让Java应用能够以极短的时间启动&#xff0c;并且占用非常少的内存资源。项目的定位是成为Java领域内最佳的云原生解决方案&#xff0c;为开发者提供一个高效…

像素坐标系与图像坐标系

前言 在数字图像处理中&#xff0c;经常会看到使用 (x, y) 表示图像中的某个像素点。 在一些图像处理库&#xff0c;例如 Pillow 、OpenCV 、Numpy 中也会使用到坐标系处理图像的像素点。 介绍 无论是像素坐标系还是图像坐标系&#xff0c;其原理都是一样的&#xff1a; 以…