STM32 基础系列教程 21 - NVIC

2023-11-07

前言

学习stm32 NVIC接口编程,学会使用常用的NVIC接口函数,优改中关优先级,开/关单个中断,开/关所有中断,开/关所有中断和异常,系统软件重启等功能。

示例详解

基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM32F103c8t6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。

 

 

本示例所用的最小系统板原理图:

 

    1. 从本节开始,关于CUBEMX工具及KEIL工具的操作将不再细讲,如果还有不熟悉的可以查看之前的教程文档。下面直接介绍工程配置:

 

      1. 系统时钟树

      1. NVIC器配置

开启exit-0外部中断和串口1中断,

串口1的配置如下图所示

      1. 引脚配置

      1. 中断配置(保持默认即可)

    1. 工程代码
      1. 在main.c 中加入如下图所示代码:

 

    1. 将程序编译,仿真调试,可以看到上面程序对应的汇编实现:

 

在Cortex-m3权威指南中有写到M3有特殊功能寄存器-中断屏蔽寄存器组(PRIMASK, FAULTMASK,以及 BASEPRI)

 

OK,本期实验完成!下期见!同时如果大家有什么疑问或是有想了解的其它内容,也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,每天都会有技术干货推出!!

 

文中资料下载,在公众号里给十三发消息:

下载|STM32基础系列教程21

 

关注十三公众号

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32 基础系列教程 21 - NVIC 的相关文章

  • 如何在 Cortex-M3 (STM32) 上从 RAM 执行函数?

    我正在尝试从 Cortex M3 处理器 STM32 上的 RAM 执行函数 该函数会擦除并重写内部闪存 所以我肯定需要在 RAM 中 但我该怎么做呢 我尝试过的是 使用 memcpy 将函数复制到 RAM 中的字节数组 检查它是否正确对齐
  • 初始化 ST-Link 设备时出错 - 无法连接到设备

    我目前正在使用 ST Link 调试器对我的 STM32F3 Discovery 板进行编程 我使用的IDE是Atollic TrueStudio 5 5 2 现在我面临一个非常奇怪的问题 那就是我不断收到消息 初始化 ST Link 设备
  • c项目makefile多重定义错误

    这个问题是一个对应于创建的repexthis问题 在我的嵌入式 C 项目中 我有两个独立的板 我想为每个板创建两个 c 文件 master c 和 Slave c 其中包含自己的特定main 功能 我使用 stm32cumbemx 生成带有
  • 在没有 IDE 的情况下如何使用 CMSIS?

    我正在使用 STM32F103C8T6 并想使用 CMSIS 这本质上只是寄存器定义 没有代码 让我的生活更轻松 同时仍保持在较低水平 问题是我不知道如何安装该库以便在命令行上使用 Makefile 使用 所有文档似乎都与特定于供应商的 I
  • GCC - 如何停止链接 malloc?

    我正在努力将我的代码缩减到最小的骨架大小 我使用的是只有 32k 闪存的 STM32F0 需要很大一部分闪存用于数据存储 我的代码已经有大约 20k 闪存大小 其中一些是由于使用了 STM32 HAL 函数 我可以在以后需要时对其进行解释和
  • 以字符串形式接收数字(uart)

    我正在尝试通过 uart 接收一个包装为字符串的数字 我发送数字 1000 所以我得到 4 个字节 空字符 但是 当我使用 atoi 将数组转换为数字并将整数与 1000 进行比较时 我并不总是得到正确的数字 这是我用于接收号码的中断处理函
  • STM32 F072上的软件如何跳转到bootloader(DFU模式)?

    STM32应用笔记2606对此进行了讨论 但没有简单的代码示例 该答案已使用 IAR EWARM 在 STM32F072 Nucleo 板上进行了测试 这个答案使用 STM32标准外设库 仅此而已 请注意 验证您是否成功进入引导加载程序模式
  • CMSIS 库是否应该包含在版本控制中? [复制]

    这个问题在这里已经有答案了 通常 我曾经在版本控制中包含芯片供应商 ST 提供的设备特定标头和源以及 CMSIS Core 标头 数量不多 也没有更新的习惯 我使用STM32微控制器 但我不使用立方体框架 or the 标准外设库 最近 我
  • 136-基于stm32单片机家庭温湿度防漏水系统设计Proteus仿真+源程序

    资料编号 136 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 DHT11传感器 蜂鸣器 制作一个基于stm32单片机家庭温湿度防漏水系统设计Proteus仿真 2 通过DHT11传感器检测当前温湿度 并且显示到L
  • HAL库学习

    CMSIS简介 CMSIS Cortex Microcontroller Software Interface Standard 微控制器软件接口标准 由ARM和其合作的芯片厂商 ST NXP 软件工具厂商 KEIL IAR 共同制定的标准
  • STM32 GPIO工作原理详解

    STM32 GPIO介绍 1 STM32引脚说明 GPIO是通用输入 输出端口的简称 是STM32可控制的引脚 GPIO的引脚与外部硬件设备连接 可实现与外部通讯 控制外部硬件或者采集外部硬件数据的功能 以STM32F103ZET6芯片为例
  • HAL 锁定和解锁函数如何使用以及为什么?

    我试图理解另一位程序员编写的代码 它使用了I C http en wikipedia org wiki I C2 B2C通信以将数据写入 STM32 微控制器的 EEPROM 一般来说 我理解他的代码是如何工作的 但我不明白他为什么使用HA
  • 解决KEIL编译慢问题

    两种方案 使用v6版本的ARM Compiler 如果v6版本编译不过 必须使用v5版本的 则可以勾选掉Browse Information选项 提升很明显 1分多钟能优化到几秒 看代码量 但是这个有个弊端 在KEIL中会影响函数跳转 建议
  • VS Code 有没有办法导入 Makefile 项目?

    正如标题所说 我可以从现有的 Makefile 自动填充 c cpp properties json 吗 Edit 对于其他尝试导入 makefile 的人 我找到了一组脚本 它们完全可以实现我想要实现的目标 即通过 VS Code 管理
  • 跟着野火学FreeRTOS:第一段(任务定义,切换以及临界段)

    在裸机系统中 系统的主体就是 C P U CPU CP U 按照预先设定的程序逻辑在 m a i n
  • 最终启动顺序错误 - STM32L476 的 Eclipse System Workbench 调试

    我正在尝试调试和运行 STM32L476 的简单汇编代码 我已经设置了 Eclipse Oxygen 在 Eclipse 中安装了最新版本的 System Workbench 插件并安装了 ST Link 驱动程序 IDE 成功构建了程序
  • 1.69寸SPI接口240*280TFT液晶显示模块使用中碰到的问题

    1 69寸SPI接口240 280TFT液晶显示模块使用中碰到的问题说明并记录一下 在网上买了1 69寸液晶显示模块 使用spi接口 分辨率240 280 给的参考程序是GPIO模拟的SPI接口 打算先移植到FreeRtos测试 再慢慢使用
  • Cortex-M3与M4权威指南

    处理器类型 所有的ARM Cortex M 处理器是32位的精简指令集处理器 它们有 32位寄存器 32位内部数据路径 32位总线接口 除了32位数据 Cortex M处理器也可以有效地处理器8位和16位数据以及支持许多涉及64位数据的操作
  • STM32 Nucleo 上的上升沿中断多次触发

    我正在使用 STM32 NUCLEO F401RE 微控制器板 我有一个扬声器 经过编程 当向上 向下推操纵杆时 可以按设定的量改变频率 我的问题是 有时 通常 当向上 向下推动操纵杆时 频率会增加 减少多次 这意味着 ISR 正在执行多次
  • STM32内部时钟

    我对 STM32F7 设备 意法半导体的 Cortex M7 微控制器 上的时钟系统感到困惑 参考手册没有充分阐明这些时钟之间的差异 SYSCLK HCLK FCLK 参考手册中阅读章节 gt RCC 为 Cortex 系统定时器 SysT

随机推荐

  • gdb调试教程

    gdb调试是c c 代码调试最重要的工具了 我们今天来系统熟悉一下 太长不看版 注意 如果针对cmake项目 需要把编译模式从release改成debug 否则无法定位到准确的行数 进入gdb debugger界面 gt gdb filen
  • 机器学习sklearn之朴素贝叶斯

    朴素贝叶斯 朴素贝叶斯和其他绝大多数的分类算法都不同 对于大多数的分类算法 比如决策树 KNN 逻辑回归 支持向量机等 他们都是判别方法 也就是直接学习出特征输出Y和特征X之间的关系 要么是决策函数Y f X 要么是条件分布P Y X 但是
  • 界面测试的测试点

    易用性测试 1 是否有快捷键 快捷键不能重复 2 是否有热键 热键不能重复 3 不要用数据将用户包围 使用便于拥护迅速吸取信息的方式表现信息 4 减少用户输入动作数量 5 默认按钮要支持Enter 操作 即按Enter 后自动执行默认按钮对
  • 2022新版Git教程 从入门到实战(一)安装Git

    个人社区 小鱼干爱编程 最近专栏 Git教程专栏 文章目录 1 Git简介 2 下载并安装Git 2 1 安装 Git 2 37 3 2 1 1下载git 2 1 2 选择安装的版本 2 2安装Git 2 2 1 下载完成后打开文件开始安装
  • vue2常见面试题

    文章目录 1 vue 修改数据页面不重新渲染 数组 对象的响应式 vue 里面是怎么处理的 2 生命周期 Vue 生命周期都有哪些 父子组件生命周期执行顺序 3 watch 和 computed 的区别 4 组件通信 组件间传值 5 nex
  • 华为OD机试 - 数组连续和(Java)

    题目描述 给定一个含有N个正整数的数组 求出有多少个连续区间 包括单个正整数 它们的和大于等于x 输入描述 第一行两个整数N x 0 lt N lt 100000 0 lt x lt 10000000 第二行有N个正整数 每个正整数小于等于
  • python怎么爬取app数据_python高级教程 爬虫抓取App数据

    教程介绍 本课程主要是利用移动端的自动化控制工具来抓取app数据 并且不讲Python基础 更注重实战 另外讲师思路清晰 按照思路手写代码 在使用工具或写代码的过程中也会给大家讲解很多小技巧 相信大家在边看边练的过程中一定有所收获 学习地址
  • Java知识点回顾(Tree)

    一 二叉树 1 二叉树的基本定义 二叉树是每个节点最多有两个子树的树结构 常见的基本形态有 二叉树可以是空集 跟可以有空的左子树或右子树 左右子树都为空 2 二叉树的五种基本性质 二叉树的第i层上的节点数最多为2 i 1 i gt 1 例如
  • C#:EXCEL退出会,进程/线程残留问题

    应该是微软的一个BUG吧 操作完EXCEL并退出后 仍然会有一个EXCEL的进程留存 解决方法 用API 将进程杀掉 using System Runtime InteropServices DllImport User32 dll Cha
  • C/C++中生成随机序列——随机函数的选择和自我实现

    一 缘由 最近需要将windows下的项目移植到linux下 但因为项目使用到随机函数 导致最后两边的结果有些微差异 因此需要将两边随机函数统一来保证运行结果每一步能对应上 大家常用的随机函数有srand rand 二 srand rand
  • Unity+Vuforia 开发遇到的问题

    Q1 利用外接摄像头时 不能打开摄像头 摄像头黑屏 A 选择ARCamera 打开设置面板 选择自己的摄像头
  • Echarts 让饼图中间文字居中并自适应图表

    背景 产品提出需求在饼图中间放两行文字且居中 简单 劈劈啪啪写完了 产品再提出你这个没有自适应啊 屏幕放大 缩小你这个就没有居中了 甚至会和饼图重叠 emmmmm UI图如下 方案一 使用tittle 不能自适应 方案二 在series中配
  • flutter实现appbar下选项卡切换

    这篇文章主要为大家详细介绍了flutter实现appbar下选项卡切换 文中示例代码介绍的非常详细 具有一定的参考价值 感兴趣的小伙伴们可以参考一下 本文实例为大家分享了flutter实现appbar下选项卡切换的具体www qmia cn
  • 【设计】】MOS管衬底电位接法

    参考 请问什么是nwell和P substrate 请问什么是nwell和P substrate 请问什么是nwell和P substrate 在CMOS的IC设计 如NPN三极管中经常看到请问什么是nwell和P substrate的说法
  • 【GitLab】在IDEA中回滚主分支

    这是工作中遇到的问题 记录下来 也方便自己后面查看操作步骤 也方便各位遇到这个问题 不至于卡太久 首先切换到主分支 这里以图中ejob项目为例 切换到主分支后 打开ejob项目的git历史记录 例如图中 从当前位置准备回滚到指定位置 右键选
  • Flutter中GetX系列九--路由/页面跳转,传值,中间件(GetPage)

    1 页面传值跳转和中间件 GetPage 使用代码 import package flutter material dart import package flutterlianxi login VC dart import package
  • ubuntu16.04 mysqlserver常见连接问题

    记录安装过程中的mysql连接问题 1 个别试图表无权限查看 CREATE USER username IDENTIFIED BY password GRANT ALL ON TO username FLUSH PRIVILEGES 或者n
  • 深度学习之Python常用第三方模块篇

    除了内建的模块外 Python还有大量的第三方模块 基本上 所有的第三方模块都会在PyPI the Python Package Index上注册 只要找到对应的模块名字 即可用pip安装 强烈推荐安装Anaconda 安装后 数十个常用的
  • ubuntu20.04设置防火墙

    Linux原始的防火墙工具iptables由于过于繁琐 所以ubuntu系统默认提供了一个基于iptable之上的防火墙工具ufw 而UFW支持图形界面操作 可以通过ufw命令操作防火墙 1 防火墙状态 active 开启状态 inacti
  • STM32 基础系列教程 21 - NVIC

    前言 学习stm32 NVIC接口编程 学会使用常用的NVIC接口函数 优改中关优先级 开 关单个中断 开 关所有中断 开 关所有中断和异常 系统软件重启等功能 示例详解 基于硬件平台 STM32F10C8T6最小系统板 MCU 的型号是