STM32学习记录 中断

2023-10-29

STM32 中断非常强大,每个外设都可以产生中断
中断类型有:系统异常、外部中断。
在这里插入图片描述
NVIC:嵌套向量中断控制器,属于内核外设,管理着包括内核和片上所有外设的中断相关的功能。两个重要的库文件:core_cm3.h和misc.h
在这里插入图片描述
在这里插入图片描述
中断编程的顺序
1-使能中断请求
2-配置中断优先级分组
3-配置NVIC寄存器,初始化NVIC_InitTypeDef;
4-编写中断服务函数

EXTI—外部中断/事件控制器
在这里插入图片描述

EXTI输入线有20条 通过AFIO外部中断寄存器来配置
EXTI初始化结构体
EXTI_InitTypeDef
1-EXTI_Line:用于产生 中断/事件 线
2-EXTI_Mode:EXTI模式(中断/事件)
3-EXTI_Trigger:触发(上/下/上下)
4-EXTI_LineCmd:使能或者失能(IMR/EMR)

系统定时器 SysTick :系统定时器,24位,只能递减,存在于内核,嵌套在NVIC中,所有的Cortex-M内核的单片机都具有这个定时器。
在这里插入图片描述
相关延时时间计算
t = reload * ( 1/clk )
Clk = 72M时,t = (72) *(1/ 72 M )= 1US
Clk = 72M时,t = (72000) *(1/ 72 M )= 1MS 时间单位换算: 1s = 1000ms = 1000 000 us = 1000 000 000ns
-systick中断优先级配置的是scb->shprx寄存器;而外设的中断优先级配置的是nvic->iprx,有优先级分组,有抢占优先级和子优先级的说法。
3-STM32里面无论是内核还是外设都是使用4个二迚制位来表示中断优先级。 4-中断优先级的分组对内核和外设同样适用。当比较的时候,只需要把内核外设的中断优先级的四个位按照外设的中断优先级来分组来解析即可,即人为的分出抢占优先级和子优先级。在这里插入图片描述
三种延时
1 软件延时`

`void delay(uint32_t count)
{
 for(;count!=0;count--);
}
delay(0xffffff);//直接调用

2.查询延时

void SysTick_Delay_ms(uint32_t ms)
{
 uint32_t i;
 SysTick_Config(72000);
 
 for(i=0;i<ms;i++)
 {
  while(!(SysTick->CTRL) &(1<<16));
 }
 //失能SysTick_CTRL_ENABLE_Msk
 SysTick->CTRL &=~SysTick_CTRL_ENABLE_Msk;

3.中断延时

volatile uint32_t isr_ms;//在stm32f10x_it.c里要用extern声明
void SysTick_Delay_ms_INT(uint32_t ms)//中断
{
 isr_ms=ms;
 SysTick_Config(72000);
 
 while(isr_ms);
 //失能SysTick_CTRL_ENABLE_Msk
 SysTick->CTRL &=~SysTick_CTRL_ENABLE_Msk;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32学习记录 中断 的相关文章

  • RabbitMQ(一)——入门

    前言 原来公司项目的消息中间件一直在用RabbitMQ 今天抽出时间简单总结梳理一下关于RabbitMQ的相关知识点 我们知道消息队列在分布式系统中应用的的地方有很多 它也有很多种类型 除了今天重点介绍的RabbitMQ 还有像Active

随机推荐

  • ADC的接地

    by Walt KesterQ I ve read your data sheets and application notes and also attendedyour seminars but I m still confused a
  • SpringBoot自动装配出现NULL的情况

    环境 idea 2021 6 mysql 8 0 问题描述 今天遇到通过 Autowired注解自动注入后 发现字段为空的问题 问题产生的原因是将被注入的对象交给了IOC容器管理但是却通过new对象的方式使用该对象 导致该对象下的内容都无法
  • C语言if语句实现分支结构应用练习题

    此练习为本人自己练习完成的答案 答案方法不止一种 仅供参考 练习题列表 1 1 计算分段函数 1 10 分 1 2 分段函数 10 分 1 3 打折促销 10 分 1 4 12 24小时制 10 分 1 5 分数等级转换 10 分 1 1
  • HashMap源码

    数组 数组存储区间是连续的 占用内存严重 故空间复杂度很大 但数组的二分查找时间复杂度很小 为 o 1 数组的特点 查找速度快 插入和删除效率低 链表 链表存储区间离散 占用内存比较宽松 故空间复杂度很小 但时间复杂度很大 为 o n 链表
  • MTCNN+CRNN解决车牌识别问题-2

    这次到CRNN部分了 CRNN网络很简单 就是CNN RNN 因为RNN适用于时间序列类型的数据 车牌呢 其实也是有规律的 比如第一位是汉字 后面是字母 汉字 前一部分通过MTCNN将车牌区域已经定位了 那这部分就需要拿CRNN来对其进行训
  • Unable to cast object of type in System.DirectoryServices.AccountManagement.GroupPrincipal

    在使用UserPrincipal Current ToString 获取域登录用户信息时 本地调试没有问题 上传到服务器报错 Unable to cast object of type System DirectoryServices Ac
  • CSwin-PNet: CNN-Swin-Vit 组合金字塔网络用于超声图像中乳腺病变分割

    ATTransUNet 期刊分析 摘要 贡献 方法 整体框架 1 Residual Swin Transformer block 2 Interactive channel attention module 3 Supplementary
  • java数据类型

    整数类型 byte short int long 浮点数类型 float double 字符类型 String 布尔类型 boolean 1 整数类型 byte 128 127 short 32768 32767 int 214748364
  • CTFHub-时间盲注-wp #(自制脚本做法)

    时间盲注脚本 coding utf 8 Time 2021 5 16 19 29 Author z1moq File ctfhub时间盲注 py Software PyCharm import requests import string
  • MATLAB实现控制系统模型(传递函数)的建立与转化,传递函数模型与零极点增益模型的转化,连续系统与离散系统的转化,对比不同采样周期对系统性能的影响

    最近使用MATLAB做了很多控制工程方面的仿真 测试不同系统的响应和特性 不得不说使用MATLAB做控制仿真还是十分简洁方便的 尤其是其中的simulink模块可以提供更加直观的模型 方便分析与测试 今天就分享在matlab中构造传递函数模
  • 【微信小程序】微信支付接入全流程

    一 前置条件 接入支付首先得需要有企业资质 并开通企业对公户 注册微信支付并进行对公户打款认证 二 开始接入 1 下载微信支付的AP证书 2 服务端接入微信支付 2 1 引入相关maven配置
  • Java基础之集合

    Java基础 集合 1 Collection接口 Collection 是 List 和 Set 的父接口 常用方法如下 package com java day16 import java util ArrayList import ja
  • 简单实现继承一个抽象类的同时实现接口

    定义一个抽象类animal author ljf 定义一个抽象类animal 关键字abstract public abstract class Animal 将动物共有属性进行封装 名字 年龄 颜色 性别 说话 private Strin
  • np.dot(a, b)用法

    In short np dot a b 就是一个乘法函数 数和数相乘 若a和b都是数 np dot 1 2 2 一维数组的内积 np dot 1 2 3 4 5 6 1 2 3 4 5 6 1x4 2x5 3x6 32 矩阵的乘积 x np
  • Unity学习笔记——TextMeshPro使用详解

    https blog csdn net elineSea article details 88799896 TextMesh Pro是Unity默认文本组件的替代品 TextMesh Pro和默认组件一样拥有高性能 它使用了完全不同的Sig
  • 为什么大部分人认为测试用例不重要?如何正确编写软件测试用例?

    如何编写测试用例似乎不是开发的重要部分 但是为了让一个软件测试人员最好地完成他们的工如如何编写测试用例似乎不是开发的重要部分 但是为了让一个软件测试人员最好地完成他们的作 他们需要一套清晰的步骤和一个被测试的东西的清晰定义 编写优秀的测试用
  • 代码审查常见代码质量问题

    配套的Bug解释模式 为了有针对性的使用这个工具 减少bug的误报 提高使用效率 我们选择了10个左右的bug模式 下面就是对这10个模式的解释 这些bug可能会引起程序的性能或逻辑问题 需要说明的是 findbugs能检测的bug pat
  • 有哪些好用的设计图工具?

    设计图纸制作软件是高级学习数字设计的最佳选择 无论你是想通过设计图纸制作软件创建一个明亮的设计 还是与其他设计师分享和交流 本文将介绍十个易于使用的设计图纸制作软件 其中大多数是初学者和高级艺术家 具有完整的绘图 照片编辑和小图形设计项目功
  • jmeter 安装_JMeter安装教程

    一 安装JMeter之前我们需要下载Java的jdk Java软件开发工具包 这是因为JMeter软件是由Java代码100 开发的 Java代码要运行必须依托于JVM Java虚拟机 因此JMeter如果要运行也必须要在有JVM环境的系统
  • STM32学习记录 中断

    STM32 中断非常强大 每个外设都可以产生中断 中断类型有 系统异常 外部中断 NVIC 嵌套向量中断控制器 属于内核外设 管理着包括内核和片上所有外设的中断相关的功能 两个重要的库文件 core cm3 h和misc h 中断编程的顺序