【STM32Cube笔记】系列文章目录

1-基于STM32的VSCode入门级教程前言
2-STM32Cube安装教程
3-STM32CubeIDE汉化
4-STM32Cube配置时钟设置
5-跑马灯引脚配置
6-Cortex-M7内核基本配置
7-新建用于储存代码的文件夹以及c/h文件
8-STM32CubeIDE点亮跑马灯
9-STLink调试
10-异步串口收发USART
11-中断控制器NVIC
12-配置外部中断
13-使用定时器产生PWM输出
14-使用定时器捕获上升/下降沿
15-数模转换AD/DA
16-STM32Cube个性化定制


7.1 新建NVIC工程

7.1.1 新建工程文件
在桌面新建文件夹,命名为“NVIC_Project”(根据实际需求选择文件夹存放路径和命名,其中路径不能包含中文),用于存放串口实验的工作空间。打开STM32CubeIDE软件,点击“Browse…”按钮,选择 “NVIC_Project”文件夹路径作为工作空间存放路径,然后点击“Launch”按钮,启动运行STM32CubeIDE。

点击“Start New STM32 project”按钮。

在搜索栏中输入需要配置的STM32芯片名称进行搜索,例如本文使用的芯片就输入“STM32H743II”,并单击选择对应封装“ LQFP176”,即可进入下一步。

在进入芯片详细页面后,可以点击“Block Diagram”或者“Datasheet”对芯片进行概览。在确认芯片信息与手头的芯片一致后,点击Next下一步开始配置芯片。

输入工程名,其余选型默认,点击“Finish”按钮。操作该步骤前需要保证网络正常,因为STM32CubeIDE需要下载对应芯片的数据包,也可以到STM官网上下载可离线安装的数据包。

点击“Yes”按钮。

点击“Project Manager->Code Generator”,将“Generated files”第1和第2选项勾选,其余默认。

点击“Pinout & Configuration->System Core->RCC”,在“RCC Mode”中将“High Speed Clock(HSC)”设置为“Crystal/Ceramic Resonator”,其余保持默认。

第一个选项High Speed Clock选择Crystal/Ceramic Resonator。其余选项无特殊需求不用打开。点击“Clock Configuration”,在“Input Frequency”输入“25”,在“PLL Source Mux”选择“HSE”作为时钟输入,在“System Clock Mux”选择“PLLCLK”作为时钟输入,在“SPI1,2,3 Clock Mux”输入“480”,然后按回车键,其他暂不设置,保持默认。

7.1.2 配置芯片内核
点击左边菜单栏“System Core”的“CORTEX_M7”进入M7的配置页面。

CPU ICache:使能I-Cache,用来缓存指令,选择打开。
CPU DCache:使能D-Cache,用来缓存数据,选择打开,其他选项不变。
点击左侧“Trace and Debug”,进入“DEBUG”页面,用自己所用的调试方式,选的是“Serial Wire”。下面的选项是外部触发调试,暂且不开。

7.1.3 配置GPIO用于LED
点击“Pinout & Configuration”,在软件右下角的引脚搜索框输入“PB0”,此时,STM32H743IIT6可视化图的PB0引脚闪烁,点击“PB0”引脚,在弹出的PB0功能列表中选择“GPIO_Output”功能。

同理,为PB1引脚选择“GPIO_Output”功能。

点击“Pinout & Configuration->System Core->GPIO->PB0”,在“PB0 Configuration”中,按照下图对PB0进行配置。

同理,对PB1进行如下配置:
GPIO output leval:GPIO的输出电平,选High为打开高电平。
GPIO mode:选择GPIO的模式,开漏或者推挽,这边选Push Pull为推挽模式
GPIO Pull-up/Pull-down:GPIO上下拉模式,这根据电路LED选上拉模式。
Maximum output speed:GPIO的IO口响应速度。选择High高速模式。
User Label:GPIO的程序使用标签,例如本文这边将PB0的名称改为IO_LED0。
7.2 使用基本定时器中断
7.2.1 内部定时器设置
首先我们需要在定时器配置栏中将定时器初始化。
点击“Timers”-“TIM1”-“Clock Source”设置为“Internal Clock”将定时器1使用内部时钟。

此时系统时钟需要刷新才能自动分配给定时器中断。点击“Clock Configuration”,点击“撤销”返回上一步,再点击“前进”复原以达到刷新的效果。

接着回到之前的TIM页面,将下方新增的“Configuration”将“ Prescaler”分频数设为48000,将“Counter Period”计数个数设为1000。由于系统时钟为480MHZ,因此将分频数设为48000得到10KHZ频率,10KHZ一次读数记10微秒,计数1000使定时器1在100ms时中断,并打开“auto-reload”开启自动清零。

接着点击“NVIC Settings”开启定时器中断即可。
TIM1为高级定时器,开启“ update interrupt”即可。

其余普通定时器正常开启定时器即可。

7.2.2 编写程序代码
点击保存,并生成代码。

新建NVIC自己的HARDWAVE文件夹以及.c和.h文件,并添加路径调用。(详见5.8章)

在“NVIC.h”中完成中断初始化函数以及回调函数的调用,同时调用“GPIO.h”“TIM.h”

在“NVIC.c”中调用“NVIC.h”后,将定时器中断初始化代码以及回调函数添加即可。

最后在“ main”函数中调用定时器中断初始化即可。

烧录程序 至单片机开发板,可以看到定时器正常控制LED闪烁。

附上程序:

#ifndef INC_NVIC_H_
#define INC_NVIC_H_
#endif /* INC_NVIC_H_ */
#include "main.h"
#include "tim.h"
#include "gpio.h"
void NVIC_Init(void);
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);
/** Configure pinsPB0   ------> IO_LED0_PinPB1   ------> IO_LED1_Pin
*/
#include "NVIC.h"
void NVIC_Init(){HAL_TIM_Base_Start_IT(&htim1); //HAL库开启定时器1}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {   //中断回调函数
if (htim->Instance == htim1.Instance) {                    //判断是哪个定时器产生中断HAL_GPIO_TogglePin(IO_LED0_GPIO_Port, IO_LED0_Pin);   //HAL库控制IO_LED0电平反转
}
}

【STM32Cube笔记】11-中断控制器NVIC相关推荐

  1. STM32震动感应控制继电器(使用循环VS使用外部中断EXTI和中断控制器NVIC)

    参考:stm32的外部中断 震动感应 控制 继电器 作者:点灯小哥 发布时间: 2021-03-05 22:37:01 网址:https://blog.csdn.net/weixin_46016743 ...

  2. Cortex-M0 LPC11C14中断控制器

    LPC11C14(Cortex-M0)微控制器采用的是NVIC(Nested Vectored InterruptController)中断控制器 NVIC中断控制器有一下特点: NVIC是ARM C ...

  3. 嵌入式linux 添加中断,《嵌入式linux应用程序开发完全手册》中断控制器操作(外部中断)学习笔记...

    <嵌入式linux应用程序开发完全手册>中断控制器操作(外部中断)学习笔记 一.ARM中断体系 当一个"异常"发生时,或者说当收到一个中断触发信号时,ARM9将会自动完 ...

  4. STM32F103 NVIC嵌入式中断控制器

    STM32F103 NVIC嵌入式中断控制器 一.什么是NVIC NVIC即嵌套向量中断控制器(Nested Vectored Interrupt Controller). STM32中有一个强大而方 ...

  5. 【STM32Cube笔记】15-数模转换AD/DA

    [STM32Cube笔记]系列文章目录 1-基于STM32的VSCode入门级教程前言 2-STM32Cube安装教程 3-STM32CubeIDE汉化 4-STM32Cube配置时钟设置 5-跑马灯 ...

  6. 【STM32Cube笔记】6-Cortex-M7内核基本配置

    [STM32Cube笔记]系列文章目录 1-基于STM32的VSCode入门级教程前言 2-STM32Cube安装教程 3-STM32CubeIDE汉化 4-STM32Cube配置时钟设置 5-跑马灯 ...

  7. 【STM32Cube笔记】2-STM32Cube安装教程

    [STM32Cube笔记]系列文章目录 1-基于STM32的VSCode入门级教程前言 2-STM32Cube安装教程 3-STM32CubeIDE汉化 4-STM32Cube配置时钟设置 5-跑马灯 ...

  8. 第6课【EXTI中断】中断 事件 NVIC EXTI寄存器

    目录 基本知识框架 课堂笔记 EXTI中断事件控制器 功能框图 中断 / 事件线 EXTI寄存器及相关库函数 EXTI寄存器 EXTI相关库函数 外部中断实战 需求分析 软件流程 硬件电路 软件代码 ...

  9. 一文读懂多架构的中断控制器

    在计算机中,中断控制器是一种集成电路,可帮助微处理器或CPU处理来自多个不同源(如外部I / O设备)的中断请求(Interrupt Request,以下简称IRQ),这些中断请求可能同时发生.中断控 ...

最新文章

  1. vue-cli3.0 Typescript 项目集成环信WebIM 群组聊天
  2. 那个学完这个小程序创业课程的小白现在月入17万
  3. Linux 系统下载网址
  4. nginx+tomcat7+memcached
  5. fastjson 大写转小写 字段_对象转json字符串,属性首字母大写自动变为小写
  6. servlet文件实现弹出框
  7. 在cygwin下使用VC编译器
  8. python与Android有关的库,这15个Android开源库,只有经常逛Github的才知道!
  9. PDF连接服务器信息,远程连接服务器.pdf
  10. 【转载】批量维护(创建/修改)客户主数据函数 SD_CUSTOMER_MAINTAIN_ALL BP自定义屏幕 数据维护
  11. 电信主机托管费用_主机托管平均费用与托管流程
  12. 惠普电脑无故出现第三方屏保
  13. ORACLE中的KEEP()使用方法
  14. 用VC++6.0制作简易浏览器
  15. PKUSC 2022游记
  16. vue3语法糖父子组件的通信
  17. vue 获取input光标位置,并实现插入模板语法。
  18. 【初创期】企业的安全建设之路到底有多难?
  19. 阿里前端工程师面试题+解题思路
  20. 教你找到免费的Google Translate API(谷歌翻译接口)+C#版的Google翻译函数

热门文章

  1. 量子计算机芯片用什么材料,量子计算机可能会使用金刚石制成的芯片
  2. Spring IOC的工作原理
  3. 链路层--->ETH(以太网)协议
  4. Springboot整合JPA多数据源(Oracle+Mysql)
  5. Redis设置密码,查看密码,修改密码,忘记密码。
  6. 云服务器、VPS、虚拟主机三者的区别(详细)
  7. 用python Turtle海龟绘制时钟遇到的各种坑汇总
  8. 凸规划问题与二阶锥规划
  9. DLL 导出方法(两种)
  10. c语言打铃器单片机程序,基于单片机的自动打铃器的设计