IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> cortex-A7核中断实验 -> 正文阅读

[嵌入式]cortex-A7核中断实验

引脚线路分析

在这里插入图片描述
在这里插入图片描述

分析框图

总结框图:
1.通过框图分析可知:RCC章节/GPIOF章节/EXTI章节/GIC章节
2.需要分析GPIOF章节:设置引脚为输入模式
3.需要分析EXTI章节:检测中断的触发方式
3.需要分析GIC章节:设置GPIOF引脚对应的中断号

在这里插入图片描述

控制器设置分析

分析RCC章节

1、寄存器总线

在这里插入图片描述
在这里插入图片描述

分析RCC_MP_AHB4ENSETR寄存器

1.确定RCC基地址
通过2.5.2章节
2.RCC_MP_AHB4ENSETR地址
RCC_MP_AHB4ENSETR地址=基地址+偏移地址 = 0x50000000 + 0xA28 =0x50000A28    
3.设置GPIOF控制器使能
0x50000A28地址的第5位置1,设置GPIOF控制器使能
RCC_MP_AHB4ENSETR[5] = 1 -------->设置GPIOF控制器使能工作

在这里插入图片描述

分析GPIO章节

分析GPIOx_MODER寄存器

在这里插入图片描述

	KEY1------>PF9引脚
	KEY2------>PF7引脚
	KEY3------>PF8引脚
	1.确定GPIOF_MODER寄存器的地址
  	地址=基地址+偏移地址=0x50007000+0x00=0x50007000    
	2.通过GPIOF_MODER设置PF9/PF7/PF8引脚设置为输入模式
  	 GPIOF_MODER[19:18]=00------>KEY1输入模式
 	 GPIOF_MODER[15:14]=00------>KEY2输入模式
  	 GPIOF_MODER[17:16]=00------>KEY3输入模式

分析EXTI章节

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

EXTI_EXTICR3:EXTI external interrupt selection registe
EXTI:外部中断选择寄存器 功能:GPIO控制器和EXTI控制器进行连	接

思考:1.EXTI_EXTICRn(n:1~4),为什么有4个EXTI_EXTICRn这样控制器?
1)通过EXTI框图分析可知,一共有16个EXTI(EXTI0~EXIT15)
2)EXTI_EXTICRn寄存器每8位管理一个EXTI,一个寄存器32位,最多管理4个EXTI
3)要想管理16个EXTI,需要4个这样EXTI_EXTICRn控制器

key1------>PF9------>EXTI9-------->EXTI_EXTICR3[15:8] = 0x05
key2------>PF7------>EXTI7-------->EXTI_EXTICR2[31:24] = 0x05
key3------>PF8------>EXTI8-------->EXTI_EXTICR3[7:0] = 0x05

思考2:有没有什么公式可以直接推出哪一个寄存器的哪几位
EXTI编号 / 4 = 商 ...... 余数
商+1 :对应的哪一个寄存器
余数*8:对应寄存器8位中的最低位
key1------>PF9------>EXTI9--->9 / 4 = 2.....1--->EXTI_EXTICR3[15:8] = 	0x05
key2------>PF7------>EXTI7--->7 / 4 = 1.....3--->EXTI_EXTICR2[31:24] 	= 0x05
key3------>PF8------>EXTI8--->8 / 4 = 2.....0--->EXTI_EXTICR3[7:0] = 0x05

分析EXTI_FTSR1寄存器

在这里插入图片描述
在这里插入图片描述

1.需要知道EXTI7/EXTI8/EXTI9对应输入事件编号是多少
通过芯片手册21.3章节进行查看
2.EXTI7/EXTI8/EXTI9对应设置EXTI_FTSR1位数:
key1------>PF9------>EXTI9--->对应事件9--->EXTI_FTSR1[9] = 0x1
key2------>PF7------>EXTI7--->对应事件7--->EXTI_FTSR1[7] = 0x1
key3------>PF8------>EXTI8--->对应事件8--->EXTI_FTSR1[8] = 0x1
3.地址
地址 = 基地址 + 偏移地址 = 0x5000D000 + 0x004  =  0x5000D004

分析EXTI_IMR1寄存器

在这里插入图片描述

分析EXTI_FPR1寄存器在这里插入图片描述

分析EXTI_FTSR1寄存器

在这里插入图片描述
在这里插入图片描述

分析EXTI_IMR1寄存器

在这里插入图片描述

分析EXTI_FPR1寄存器

在这里插入图片描述
在这里插入图片描述

分析GICD章节

在这里插入图片描述

分析GICD_CTLR寄存器

在这里插入图片描述
在这里插入图片描述

分析GICD_IPRIORITYRx寄存器

在这里插入图片描述

分析GICD_ITARGETSRx寄存器

在这里插入图片描述

分析GICD_ICPENDRx寄存器

在这里插入图片描述

分析GICC章节

分析GICC_CTLR寄存器

在这里插入图片描述

分析GICC_PMR寄存器

在这里插入图片描述

分析GICC_IAR寄存器

在这里插入图片描述

分析GICC_EOIR寄存器

在这里插入图片描述

实验现象

在这里插入图片描述

实验代码

key.c

#include "key.h"

/*****KEY1---->PF9**********/
//初始化EXTI层
void pf9_exti_init()
{
/*****RCC章节初始化******/
//1.设置GPIOF组时钟使能 MP_AHB4ENSETR[5] = 1
    RCC->MP_AHB4ENSETR |= 0x1<<5;

/*****GPIO章节初始化******/
//1.设置PF9引脚为输入模式 MODER[19:18] = 00
GPIOF->MODER &=(~(0x3<<18));

/*****EXTI章节初始化******/
//1.设置PF9引脚和EXIT9控制器进行连接 EXTICR3[15:8] = 0x05
EXTI->EXTICR3 &=(~(0xff<<8));
EXTI->EXTICR3 |= (0x05<<8);
//2.设置PF9引脚检测方式下降沿 FTSR1[9] = 1
EXTI->FTSR1 |= 0x1<<9;
//3.设置PF9引脚中断不屏蔽 C1IMR1[9] = 1
    EXTI->C1IMR1 |= 0x1<<9;
}

//初始化GICD层
void pf9_gicd_init()
{
//1.设置GICD层全局中断使能寄存器 CTRL[0] = 1
GICD->CTRL |=0x1<<0;
//2.设置GICD层中断使能寄存器 ISENABLER[3] 第三位 1
GICD->ISENABLER[3] |= 0x1<<3;
//3.设置GICD层中断优先级寄存器IPRIORITYR[24] [31:27]
GICD->IPRIORITYR[24] &=(~(0x1f<<27));
//4.设置GICD层中断目标分配寄存器 ITARGETSR[24] [25:24] = 01
GICD->ITARGETSR[24] &=(~(0x3<<24));
GICD->ITARGETSR[24] |=0x1<<24;
}

//初始化GICC层
void pf9_gicc_init()
{
//1.设置GICC层全局中断使能寄存器 CTRL[0] = 1
     GICC->CTRL |=0x1<<0;
//2.设置GICC层中断优先级寄存器 PMR[7:3]
GICC->PMR &=(~(0x1f<<3));
GICC->PMR |=0x1f<<3;
}

key.h

#ifndef __KEY_H__
#define __KEY_H__
#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_exti.h"
#include "stm32mp1xx_gic.h"
/*****KEY1---->PF9**********/
//初始化EXTI层
void pf9_exti_init();
//初始化GICD层
void pf9_gicd_init();
//初始化GICC层
void pf9_gicc_init();




#endif
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-10-08 20:58:04  更:2022-10-08 21:01:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 19:04:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码