2022/9/19——基于stm32mp157中M4核的中断实验

2023-10-10 00:10
文章标签 中断 实验 2022 19 m4 stm32mp157

本文主要是介绍2022/9/19——基于stm32mp157中M4核的中断实验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实验所用的中断接口为:

        三个按键——key1、key2、key3,所对应的管脚为——PF9、PF7、PF8,检测方式为下降沿

        光电开关,对应的管脚为PE15,检测方式为上升沿

        火焰传感器,对应的管脚为PF5,检测方式为上升沿

        人体红外,对应的管脚为PF12,检测方式为上升沿

采用STM32CubeMX软件进行管脚的配置和初始化之后生成工程并在keil软件中填充代码

代码的填充

1、gpio.c

将LED1与key3和人体红外相连接,每当key3按下或人体红外触发LED1的状态就会发生改变

将LED2与key2和火焰传感器相连接,每当key2按下或火焰传感器触发LED2的状态就会发生改变

将LED3与key1和光电开关相连接,每当key1按下或光电开关触发LED3的状态就会发生改变

/* USER CODE BEGIN 0 */
//下降沿
void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
{switch(GPIO_Pin){//KEY2--->PF10case GPIO_PIN_7:HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_10);//打印提示信息printf("KEY2按下!!!!!\n");break;//KEY3--->PE10case GPIO_PIN_8:HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_10);//打印提示信息printf("KEY3按下!!!!!\n");break;//KEY1--->PE8case GPIO_PIN_9:HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_8);//打印提示信息printf("KEY1按下!!!!!\n");break;}
}
//上升沿
void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)
{switch(GPIO_Pin){//PF5--->PF10case GPIO_PIN_5:HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_10);//打印提示信息printf("火焰感应触发!!!!!\n");break;//PF12--->PE10case GPIO_PIN_12:HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_10);//打印提示信息printf("人体红外触发!!!!!\n");break;//PE15--->PE8case GPIO_PIN_15:HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_8);//打印提示信息printf("光电开关触发!!!!!\n");break;}
}/* USER CODE END 0 */

2、为了通过串口打印提示信息,需要在usart.c中重写fputc函数

/* USER CODE BEGIN 0 */
int fputc(int ch, FILE* stream)
{//判断发送寄存器是否为空while(!(huart4.Instance->ISR & (0x1 << 7)));//将要发的数据放入到发送寄存器?huart4.Instance->TDR = ch;//判断是否为'\n'if(ch == '\n'){//判断发松寄存器是否为空while(!(huart4.Instance->ISR & (0x1 << 7)));huart4.Instance->TDR = '\r';}return ch;
}
/* USER CODE END 0 */

3、实验现象

 

这篇关于2022/9/19——基于stm32mp157中M4核的中断实验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/176533

相关文章

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD

HNU-2023电路与电子学-实验3

写在前面: 一、实验目的 1.了解简易模型机的内部结构和工作原理。 2.分析模型机的功能,设计 8 重 3-1 多路复用器。 3.分析模型机的功能,设计 8 重 2-1 多路复用器。 4.分析模型机的工作原理,设计模型机控制信号产生逻辑。 二、实验内容 1.用 VERILOG 语言设计模型机的 8 重 3-1 多路复用器; 2.用 VERILOG 语言设计模型机的 8 重 2-1 多

FreeRTOS学习笔记(四)Freertos的中断管理及临界保护

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Cortex-M 中断管理1.1 中断优先级分组1.2 相关寄存器1.3 相关宏定义1.4 FreeRTOS 开关中断 二、临界段及其保护2.1 taskENTER_CRITICAL( ) 和 taskEXIT_CRITICAL( )2.2 taskENTER_CRITICAL_FROM_ISR( )

react笔记 8-19 事件对象、获取dom元素、双向绑定

1、事件对象event 通过事件的event对象获取它的dom元素 run=(event)=>{event.target.style="background:yellowgreen" //event的父级为他本身event.target.getAttribute("aid") //这样便获取到了它的自定义属性aid}render() {return (<div><h2>{

Cortex-A7:ARM官方推荐的嵌套中断实现机制

0 参考资料 ARM Cortex-A(armV7)编程手册V4.0.pdf ARM体系结构与编程第2版 1 前言 Cortex-M系列内核MCU中断硬件原生支持嵌套中断,开发者不需要为了实现嵌套中断而进行额外的工作。但在Cortex-A7中,硬件原生是不支持嵌套中断的,这从Cortex-A7中断向量表中仅为外部中断设置了一个中断向量可以看出。本文介绍ARM官方推荐使用的嵌套中断实现机

61.以太网数据回环实验(4)以太网数据收发器发送模块

(1)状态转移图: (2)IP数据包格式: (3)UDP数据包格式: (4)以太网发送模块代码: module udp_tx(input wire gmii_txc ,input wire reset_n ,input wire tx_start_en , //以太网开始发送信

LTspice模拟CCM和DCM模式的BUCK电路实验及参数计算

关于BUCK电路的原理可以参考硬件工程师炼成之路写的《 手撕Buck!Buck公式推导过程》.实验内容是将12V~5V的Buck电路仿真,要求纹波电压小于15mv. CCM和DCM的区别: CCM:在一个开关周期内,电感电流从不会到0. DCM:在开关周期内,电感电流总会到0. CCM模式Buck电路仿真: 在用LTspice模拟CCM电路时,MOS管驱动信号频率为100Khz,负载为10R(可自

外部中断的边缘触发和电平触发

MCS-51单片机中的边缘触发是指当输入引脚电平由高到低发生跳变时,才引起中断。而电平触发是指只要外部引脚为低电平就引起中断。         在电平触发方式下,当外部引脚的低电平在中断服务返回前没有被拉高时(即撤除中断请求状态),会引起反复的不需要的中断,造成程序执行的错误。这类中断方式下,需要在中断服务程序中设置指令,清除外部中断的低电平状态,使之变为高电平。

HCIA--实验十:路由的递归特性

递归路由的理解 一、实验内容 1.需求/要求: 使用4台路由器,在AR1和AR4上分别配置一个LOOPBACK接口,根据路由的递归特性,写一系列的静态路由实现让1.1.1.1和4.4.4.4的双向通信。 二、实验过程 1.拓扑图: 2.步骤: (下列命令行可以直接复制在ensp) 1.如拓扑图所示,配置各路由器的基本信息: 各接口的ip地址及子网掩码,给AR1和AR4分别配置