四 STM32F4 实现外部中断以及串口打印

参考文章: 中断-NVIC 以及EXTI外设详解

这里使用STM32F411U6 微控制器 , 这里使用PC15产生脉冲信号, 并利用PA1 引脚输入信息来触发外部中断 .

1. 初始化外部中断 EXIT_init()

  • 对用到的外设进行时钟使能
  • 配置引脚PC15 为输出 , 推挽 , 上拉 , 100MHZ 模式
  • 配置引脚PA1 为输入 上拉
  • 通过 SYSCFG_EXTILineConfig() 函数 将PA1 于中断线 EXTI_Line1 进行连接
  • 配置 外部中断线 1 配置为上升沿触发模式
void  EXIT_init(void)
{
    //使能外设时钟 
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);


    //初始化GPIOC引脚15 
    GPIO_InitTypeDef GPIO_InitStruct ; 
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT ; 
    GPIO_InitStruct.GPIO_OType = GPIO_OType_PP ; 
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP ; 
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_15 ; 
    GPIO_Init( GPIOC, & GPIO_InitStruct);

    //初始化GPIOA引脚1 
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN ; 
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP ; 
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10 ; 
    GPIO_Init( GPIOA, & GPIO_InitStruct);

    /* 将引脚和中断线进行连接*/
    SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA , EXTI_PinSource1 );

    EXTI_InitTypeDef    EXTI_InitStruct ;
    EXTI_InitStruct.EXTI_Line = EXTI_Line1 ;//PA1 对应EXTI_Line1 
    EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt ; 
    EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising ; 
    EXTI_InitStruct.EXTI_LineCmd = ENABLE ; 
    EXTI_Init(&  EXTI_InitStruct) ; 

}

2. 配置NVIC 中断服务 NVIC_config()

使能外设中断后, 再送入NVIC再使能
在这里插入图片描述

  • 配置中断优先级分组
  • 配置外部中断 EXTI1 , 设置抢占优先级 以及响应优先级 , 使能外部中断
void NVIC_config(void)
{
    /* 优先级分组 */
    NVIC_PriorityGroupConfig( NVIC_PriorityGroup_2 ); 

    /*配置对应外设中断*/
    NVIC_InitTypeDef NVIC_InitStruct ; 
    NVIC_InitStruct.NVIC_IRQChannel =  EXTI1_IRQn  ;  //外部中断1 通道  IRQn 位于stm32f4xx.h 中196行处 
    NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority =2 ; //抢占优先级 2
    NVIC_InitStruct.NVIC_IRQChannelSubPriority = 2  ; //响应优先级 2
    NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE ; //使能中断 

    NVIC_Init(& NVIC_InitStruct);
}

3. 编写中断服务函数

中断服务的函数已经写好 位于 启动文件 startup_stm32f411xe.s 下 102 行

                DCD     EXTI0_IRQHandler                  ; EXTI Line0                                             

模仿别人将其放在专门一个文件 stm32f4xx_it.c 下

void EXTI1_IRQHandler(void)
{
  if(EXTI_GetITStatus(EXTI_Line1) == 1) //检查EXTI_Line1中断标志位
  {
    printf("EXTI1_IRQHandler\r\n") ; // 包含头文件 stdio.h
    EXTI_ClearITPendingBit(EXTI_Line1) ; //及时清除  EXTI_Line1 的标志位
  }
}

4. 主函数


#include "stm32f4xx.h"
# include "USART.h" 
#include "EXIT.h" 


/*使用 PC15 产下下降沿脉冲 传入到 PA1 使用 用EXTI_Line1 检测下降沿
出发中断 , 然后用到串口打印触发的信息 
*/

void delay_ms(uint32_t ms) ; 
int main()
{  
    /*串口初始化*/
    GPIO_init(); 
    USART_init(); 

    /*配置外设中断 以及NVIC 使能 */
   
    EXIT_init() ;
    NVIC_config() ;

  while(1)
  {
    Test() ;
    __NOP() ; 
    __NOP() ; 
  }

}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IDEA2023找不到 Allow parallel run

我的idea版本:2023.1.4 第一步:点击Edit Configrations 第二步:点击Modify options 第三步:勾选Allow multiple instances 最后点击Apply应用一下 ok,问题解决!

生成对抗网络(GAN)手写数字生成

文章目录 一、前言二、前期工作1. 设置GPU(如果使用的是CPU可以忽略这步) 二、什么是生成对抗网络1. 简单介绍2. 应用领域 三、网络结构四、构建生成器五、构建鉴别器六、训练模型1. 保存样例图片2. 训练模型 七、生成动图 一、前言 我的环境&#xff1…

《合成孔径雷达成像算法与实现》_使用CS算法对RADARSAT-1数据进行成像

CSA 简介:Chirp Scaling 算法 (简称 CS 算法,即 CSA) 避免了 RCMC 中的插值操作。该算法基于 Scaling 原理,通过对 chirp 信号进行频率调制,实现了对信号的尺度变换或平移。基于这种原理,可以通过相位相乘代替时域插值…

Tomcat安装及配置教程

Tomcat安装及配置教程 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量…

Spring Security 的使用

一、简介 1.1、Spring Security 相关概念 1.过滤器链(Filter Chain) 基于Servlet过滤器(Filter)处理和拦截请求,进行身份验证、授权等安全操作。过滤器链按顺序执行,每个过滤器负责一个具体的安全功能。 …

什么是网络可视化?网络可视化工具有用吗

网络可视化定义是自我描述的,因为它在单个屏幕上重新创建网络布局,以图形和图表的形式显示有关网络设备、网络指标和数据流的信息,为 IT 运营团队提供一目了然的理解和决策。 网络是复杂的实体,倾向于持续进化,随着业…

利用MCMC 获得泊松分布

写出概率流方程如下 if state 0: if np.random.random() < min([Lambda/2, 1]):state 1else:passelif state 1:if choose_prob_state[i] < 0.5:#选择 1 -> 0&#xff0c;此时的接受概率为min[2/Lambda, 1]if np.random.random() < min([2/Lambda, 1]…

STM32USART+DMA实现不定长数据接收/发送

STM32USARTDMA实现不定长数据接收 CubeMX配置代码分享实践结果 这一期的内容是一篇代码分享&#xff0c;CubeMX配置介绍&#xff0c;关于基础的内容可以往期内容 夜深人静学32系列11——串口通信夜深人静学32系列18——DMAADC单/多通道采集STM32串口重定向/实现不定长数据接收 …

『PyTorch学习笔记』分布式深度学习训练中的数据并行(DP/DDP) VS 模型并行

分布式深度学习训练中的数据并行(DP/DDP) VS 模型并行 文章目录 一. 介绍二. 并行数据加载2.1. 加载数据步骤2.2. PyTorch 1.0 中的数据加载器(Dataloader) 二. 数据并行2.1. DP(DataParallel)的基本原理2.1.1. 从流程上理解2.1.2. 从模式角度理解2.1.3. 从操作系统角度看2.1.…

【ESP32】手势识别实现笔记:红外温度阵列 | 双三次插值 | 神经网络 | TensorFlow | ESP-DL

目录 一、开发环境搭建与新建工程模板1.1、开发环境搭建与卸载1.2、新建工程目录1.3、自定义组件 二、驱动移植与应用开发2.1、I2C驱动移植与AMG8833应用开发2.2、SPI驱动移植与LCD应用开发2.3、绘制温度云图2.4、启用PSRAM&#xff08;可选&#xff09;2.5、画面动静和距离检测…

力扣:1419. 数青蛙

题目&#xff1a; 代码&#xff1a; class Solution { public:int minNumberOfFrogs(string croakOfFrogs){string s "croak";int ns.size();//首先创建一个哈希表来标明每个元素出现的次数&#xff01;vector<int>hash(n); //不用真的创建一个hash表用一个数…

事务--02---TCC模式

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 TCC模式两阶段提交 的模型 1.流程分析阶段一&#xff08; Try &#xff09;&#xff1a;阶段二&#xff08;Confirm)&#xff1a;阶段二(Canncel)&#xff1a; 2.事…

java编程:⼀个⽂件中存储了本站点下各路径被访问的次数,请编程找出被访问次数最多的10个路径

题目 编程题&#xff1a;⼀个⽂件&#xff08;url_path_statistics.txt&#xff09;中存储了本站点下各路径被访问的次数 请编程找出被访问次数最多的10个路径时间复杂是多少&#xff0c;是否可以优化&#xff08;假设路径数量为n&#xff09;如果路径访问次数⽂件很⼤&#x…

unity3d模型中缺失animation

在 模型的Rig-Animationtype 设置成Legacy https://tieba.baidu.com/p/2293580178

解决WPS拖动整行的操作

如上图&#xff0c;想要把第4行的整行内容&#xff0c;平移到第1行。 1.选中第4行的整行 2.鼠标出现如图的样子时&#xff0c;按住鼠标左键&#xff0c;上移到第1行位置后&#xff0c;放开左键即可。

vue项目和wx小程序

wx:key 的值以两种形式提供&#xff1a; 1、字符串&#xff0c;代表在 for 循环的 array 中 item 的某个 property&#xff0c;该 property 的值需要是列表中唯一的字符串或数字&#xff0c;且不能动态改变。 2、保留关键字 this 代表在 for 循环中的 item 本身&#xff0c;这种…

测试与管理 Quota

用myquota1创建一个大的文件测试 理论猜想&#xff1a;超过soft可以&#xff0c;但是超过hard就不行了&#xff0c;最大值就是hard&#xff0c;如果超过soft&#xff0c;过了17天不处理&#xff0c;最后限制值会被强制设置成soft。修改设置成hard值 切换测试用户&#xff0c;m…

易宝OA ExecuteSqlForSingle SQL注入漏洞复现

0x01 产品简介 易宝OA系统是一种专门为企业和机构的日常办公工作提供服务的综合性软件平台&#xff0c;具有信息管理、 流程管理 、知识管理&#xff08;档案和业务管理&#xff09;、协同办公等多种功能。 0x02 漏洞概述 易宝OA ExecuteSqlForSingle接口处存在SQL注入漏洞&a…

苹果TF签名全称TestFlight签名,需要怎么做才可以上架呢?

如果你正在开发一个iOS应用并准备进行内测&#xff0c;TestFlight是苹果提供的一个免费的解决方案&#xff0c;它使开发者可以邀请用户参加应用的测试。以下是一步步的指南&#xff0c;教你如何利用TestFlight进行内测以便于应用后续可以顺利上架App Store。 1: 准备工作 在测…

项目设计---网页五子棋

文章目录 一. 项目描述二. 核心技术三. 需求分析概要设计四. 详细设计4.1 实现用户模块4.1.1 约定前后端交互接口4.1.2 实现数据库设计4.1.3 客户端页面展示4.1.4 服务器功能实现 4.2 实现匹配模块4.2.1 约定前后端交互接口4.2.2 客户端页面展示4.2.3 服务器功能实现 4.3 实现对…