最详细STM32,cubeMX外部中断

这篇具有很好参考价值的文章主要介绍了最详细STM32,cubeMX外部中断。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这篇文章将详细介绍 cubeMX外部中断的配置,实现过程。


前言

  • 实验开发板:STM32F103C8T6。
  • 所需软件:keil5 , cubeMX 。
  • 实验目的:外部中断的意义,cubeMX配置和实现 等 。

一、外部中断的基础知识。

对于外部中断的基础知识,可以参考我之前的文章:STM32 EXTI外部中断

二、cubeMX 配置外部中断

  1. 选择芯片。
    stm32cubemx外部中断,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,cubeMX,EXTI,嵌入式
  2. 配置仿真。(如果不配置,程序将无法下载到板子上)
    stm32cubemx外部中断,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,cubeMX,EXTI,嵌入式
  3. 配置系统时钟,选择 HSE , 高速时钟。
    stm32cubemx外部中断,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,cubeMX,EXTI,嵌入式
  4. 设置时钟树,这里直接填写最大频率 72MHZ,然后 enter 双击即可。(系统自动生成相应时钟)
    stm32cubemx外部中断,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,cubeMX,EXTI,嵌入式
  5. 设置工程的名字,路径,以及工具链。
    stm32cubemx外部中断,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,cubeMX,EXTI,嵌入式
  6. 设置自动生成 .c/.h 文件。
    stm32cubemx外部中断,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,cubeMX,EXTI,嵌入式
  7. 选择引脚设置成中断模式。(PA0 接的是按键)
    stm32cubemx外部中断,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,cubeMX,EXTI,嵌入式
  8. 设置上升/下降/双边沿触发,选择是否上拉/下拉 电阻。
    (上拉/下拉 根据具体电路图确定。当电平发生变化时,触发中断,会调用中断回调函数。)
    stm32cubemx外部中断,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,cubeMX,EXTI,嵌入式
  9. 使能中断。stm32cubemx外部中断,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,cubeMX,EXTI,嵌入式
  10. 生成工程。
    stm32cubemx外部中断,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,cubeMX,EXTI,嵌入式

三、自动生成的代码解析

看过我之前文章的应该一眼就能看懂 cubeMX 自动生成的代码。5个步骤,我再来讲解一下。
stm32cubemx外部中断,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,cubeMX,EXTI,嵌入式

  1. 首先定义一个 GPIO_InitTypeDef 的结构体对象。
    可以看到该结构包含了 引脚,工作模式,是否 上拉/下拉 电阻,速度 。通过这个结构体就可以对各个外设进行初始化设置。
    stm32cubemx外部中断,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,cubeMX,EXTI,嵌入式
  2. 第二步 是使能 gpio 端口
    根据外设的GPIO端口来分别使能。(这里按键对应的是 PA0 , 所以使能 GPIOA )
__HAL_RCC_GPIOA_CLK_ENABLE();
  1. 配置引脚。
    就是对我们第一步 创建的结构体进行初始化。
    分别 配置引脚端口号 GPIO_PIN_0 , 设置上升沿触发中断 , 下拉电阻。最后调用 HAL_GPIO_Init( ) 函数初始化 GPIO 。
  GPIO_InitStruct.Pin = GPIO_PIN_0;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
  GPIO_InitStruct.Pull = GPIO_PULLDOWN;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  1. 设置 优先级。
    优先级分为:抢占优先级,子优先级。都是 值越小,优先级越大。即 为0 时,优先级最大。
HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0);

也可以通过 cubeMX 配置。
stm32cubemx外部中断,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,cubeMX,EXTI,嵌入式

  1. 使能中断。
HAL_NVIC_EnableIRQ(EXTI0_IRQn);

四、代码实现。

当触发中断时,会调用 中断回调函数来进行处理。
所以我们可以在 中断回调函数 中实现想要的功能即可。

/* 中断回调函数  */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
}

注意
我们在工程中编写代码时,尽量在 类似 BEGIN 0END 0 之间写,这样当我们修改 cubeMX 中的配置,再次生成代码时,就不会将之前我们编写的代码清除。

/* USER CODE BEGIN 0 */

int count = 0;

/*  每按下按键,触发一次中断,count 增加一次 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
	if(GPIO_Pin == GPIO_PIN_0)
	{
		count++;
	}
}


/* USER CODE END 0 */

这里的 函数参数是某个引脚,当相应引脚的按键按下时,即执行里面的函数。


总结

下一篇文章为大家介绍如何不使用 cubeMX ,手动写一个外部中断的程序。文章来源地址https://www.toymoban.com/news/detail-827332.html

到了这里,关于最详细STM32,cubeMX外部中断的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32CubeMX学习三 之外部中断

    记录一下STM32CubeMX的学习笔记,同时分享给初学的小白,希望一起进步。 如何使用STM32CubeMX以及工程创建在之前的博客有提到,这里就直接从外部中断讲起。 编译环境:KEIL 代码生成:STM32CubeMX 库:HAL MCU:STM32F072 假设你的cubeMX工程已经建好,这里我们配置KEY1、KEY2、KEY3三个按

    2023年04月08日
    浏览(41)
  • STM32开发(9)----CubeMX配置外部中断

    本章介绍使用STM32CubeMX对引脚的外部中断进行配置,介绍了中断架构体系,外部中断/事件控制器(EXTI),嵌套向量中断控制器(NIVC),并通过实验展示配置后的效果。 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理

    2024年02月15日
    浏览(48)
  • STM32F103利用CubeMX配置开启定时中断

    1、外部晶振8MHz,下载方式SWD模式,需求配置定时器1,产生每100ms一次中断 新建工程、配置晶振、选择下载方式等略 2、查阅资料,STM32F103的时钟树分配  3、配置CubeMX的时钟树  4、配置定时器-开启定时中断  5、配置定时时间 ( 定时周期 = (Prescaler + 1) × (Period + 1) ÷ 时钟频率

    2024年02月15日
    浏览(49)
  • STM32F429IGT6使用CubeMX配置外部中断按键

    1、硬件电路 2、设置RCC,选择高速外部时钟HSE,时钟设置为180MHz 3、配置GPIO引脚  4、NVIC配置  PC13相同   5、生成工程配置   6、部分代码 中断回调函数 7、实验现象

    2024年02月13日
    浏览(43)
  • 基于STM32CubeMX与keil采用按键外部中断方式控制LED与蜂鸣器

    这篇文章详细记录外部中断方式控制LED的亮灭以及蜂鸣器的开关;本文从原理图开始到最后实现功能,内容详细。 本栏目的所有都是基于STM32F407ZET6芯片,博主采用的是普中的天马F407开发板。 实现功能:LED0与LED1默认熄灭,蜂鸣器默认关闭。按下按键KEY0,控LED0亮灭;按下按

    2024年02月16日
    浏览(52)
  • 2.基于正点原子STM32F103的定时器中断实验(HAL库实现)(cubeMX)

      基本上每一款MCU都会配备定时器这个外设,STM32 的每个通用定时器都是完全独立的,没有互相共享的任何资源。 同样,STM32F1系列的定时器功能也很强大,包括: TIM1和TIM8两个高级定时器; TIM2~TIM5是个通用寄存器; TIM7,TIM8,两个基本定时器。 由于本次实验适用于新手入门

    2023年04月26日
    浏览(162)
  • STM32CubeIDE使用示例(STM32CubeMX+STM32CubeIDE+Gcc+JLINK+STM32G030C8T6)

    本文简单记录下STM32CubeIDE的使用方法,整体的环境是STM32CubeMX+STM32CubeIDE+Gcc+JLINK+STM32G030C8T6,实现的简单测试功能是让STM32G030C8T6板子上的LED闪烁,以STM32G030C8T6 PB4 脚做LED 输出闪烁为例,外部8MHZ 晶振,系统主频64MHZ,LED 灯1 秒钟闪烁一次做一个示例程序; 1、我这边已经装好了ST

    2024年02月15日
    浏览(47)
  • [附源码] STM32F103C8T6+外接MCP4725 外部DAC

            STM32F103C8T6最小系统板是大家很常用的一款单片机,它内部有多个ADC模数转换通道,但并 没有DAC数模转换功能 ,当需要进行数字量转换为模拟量时就需要借助外部DAC。             MCP4725是具有非易失性存储器的单通道12位缓冲电压输出DAC。用户可将配置寄存器

    2024年02月04日
    浏览(50)
  • STM32 Cubemx 同名外设中断及回调

    最近在学习STM32,采用HAL库开发方式。记录一下 同名外设中断及回调 。 这里提及的同名外设指USART1/2之类的 相同外设 ,但 不是同一个instance 。 以使用cubemx配置两个同名外设EXTI0/EXT4为例。 在NVIC配置界面, 勾选EXTI line0/4 . 在Code Generation栏,勾选以下三项: Generate Enable in I

    2024年02月10日
    浏览(36)
  • STM32-OTA升级-基于STM32CubeMX+STM32F103(二)代码实现

    0 引言 在上一篇文章中,我们已经讲述了STM32的启动流程、IAP的原理和OTA的原理(最后这部分直接分享了一些博客,因为前辈们已经写的非常好了),下面这篇主要用来记录STM32-OTA的实验步骤。 源码我大家自行下载即可。 链接:https://pan.baidu.com/s/1uemqEqDNI3-IjulZ4oNFlw?pwd=of3g 提取

    2024年02月04日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包