【STM32 Cortex-M4核中断实验】

news2024/12/24 20:41:23

STM32 Cortex-M4核中断实验

  • 实验要求
  • MX相关设置
    • LED设置
    • 按键设置
    • 光电开关,火焰传感器,人体红外设置
    • UART4设置
  • 代码编写
  • 结果测试

实验要求

使用M4核开发
PF7/PF8/PF9/PF5/PF12/PE15检测中断
要求1:当中断到来时,LED灯状态取反
要求2:当中断触发时,打印一句话
例如按键1触发,LED1状态取反,串口打印一句话:KEY1 DOWN#####

MX相关设置

LED设置

以LED1为例:
1、选择模式为GPIO_Output
在这里插入图片描述
2、鼠标右键选择M4核
在这里插入图片描述
3、配置信息
在这里插入图片描述

按键设置

以KEY1为例:
1、鼠标左键选择GPIO_EXTI9
在这里插入图片描述
2、鼠标右键选择M4核
在这里插入图片描述
3、配置信息,选择下降沿触发
在这里插入图片描述
4、设置NVIC,使其使能,并设置优先级
在这里插入图片描述

光电开关,火焰传感器,人体红外设置

同按键中断

UART4设置

PB2
1、鼠标左键选择UART4_RX
在这里插入图片描述
PG11
1、鼠标左键选择UART4_TX
在这里插入图片描述

2、选择M4核
在这里插入图片描述

代码编写

1、gpio.c 部分关键代码

void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
{
	switch(GPIO_Pin)
	{
		/*KEY-----LED2*/
		case GPIO_PIN_7:
			HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_10);
			printf("LED2 DOWN !!!");
			break;
		case GPIO_PIN_8:
			HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_10);
		  printf("LED1 DOWN !!!");
			break;
		case GPIO_PIN_9:
			HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_8);
			printf("LED3 DOWN !!!");
			break;		
	}
}

void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)
{
	switch(GPIO_Pin)
	{
		case GPIO_PIN_15:
			HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_10);
			printf("LED2 DOWN !!!");
			break;
		case GPIO_PIN_5:
			HAL_GPIO_TogglePin(GPIOE,GPIO_PIN_10);
			printf("LED1 DOWN !!!");
			break;
		case GPIO_PIN_12:
			HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_8);
			printf("LED3 DOWN !!!");
			break;
		
	}
}

2、uart.c 部分代码

int fputc(int ch,FILE* stream)
{
	while(!(huart4.Instance->ISR & (0x1 << 7)));
	huart4.Instance->TDR = ch;
	if(ch == '\n')
	{
		while(!(huart4.Instance->ISR & (0x1 << 7)));
		huart4.Instance->TDR = '\r';
		
	}
	return ch;
}

结果测试

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EpilepsyGAN:具有隐私保护的合成癫痫脑活动-2021(同26)

EpilepsyGAN: Synthetic Epileptic Brain Activities with Privacy Preservation Abstract 癫痫是一种慢性神经系统疾病&#xff0c;影响全世界6500多万人&#xff0c;表现为反复发作的无端癫痫发作。癫痫发作的不可预测性不仅会降低患者的生活质量&#xff0c;而且还可能危及…

【前端领域】一个好玩好看的罗盘时钟 --- 附详细介绍

唯有热爱&#xff0c;可抵岁月漫长&#xff0c;唯有热爱&#xff0c;不畏世间无常&#xff01; 少年不曾迷茫&#xff0c;展翅飞往神域&#xff0c;坚定初心&#xff0c;踏实行动。 新的一年&#xff0c;收下少年的祝福&#xff0c;一起踏上新道路。 &#x1f4aa;(ง •_•)…

Spring Boot 日志文件

1.日志有什么用&#xff1f; ⽇志是程序的重要组成部分&#xff0c;想象⼀下&#xff0c;如果程序报错了&#xff0c;不让你打开控制台看⽇志&#xff0c;那么你能找到报错的原因吗&#xff1f;答案是否定的&#xff0c;写程序不是买彩票&#xff0c;不能完全靠猜&#xff0c;…

Blender 非线性编辑器

文章目录非线性编辑器介绍动画摄影表/动作编辑器与非线性编辑器NAL非线性编辑器基本操作复制动画片段混合动画片段动画片段N键菜单活动片段栏回放剪辑栏非线性编辑器介绍 1 非线性编辑器是动画制作的一部分&#xff0c;类似于PR的轨道&#xff0c;可以合并多个不同的动画动作 …

【回答问题】ChatGPT上线了!推荐30个以上比较好的构建知识图谱源码

在此列出30个比较好的构建知识图谱的源码&#xff1a; Neo4j AgensGraph JanusGraph AnzoGraph Cayley GraphDB ArangoDB FlockDB OrientDB Redis Graph Virtuoso TigerGraph HyperGraphDB Titan Stardog GraphQL GRAKN.AI AllegroGraph Blazegraph Google Cloud Bigtable Apa…

10四个基本子空间

四个基本子空间 四个基本空间介绍 对于一个 m*n 矩阵 A 来说&#xff0c;以下四个基本空间是其基础。 2.1 四个基本空间的维数与基 还是研究 m*n 的矩阵 A&#xff0c;其四个子空间的基本性质如下: &#xff08;1&#xff09;列空间 之前介绍过列空间的基&#xff0c;设矩…

Go语言 值传递 引用传递 修改集合中的值

分类看一下Go的值传递和引用传递&#xff1a; 值传递&#xff1a;将值传递给函数 /* 引入单测包 */ import ("testing" )func TestSwap(t *testing.T) {x : 100y : 200swap(x, y)println("x:", x)println("y:", y) }/* 定义相互交换值的函数 *…

自己编译docker镜像

有时候官方现在的docker镜像并不能很好地符合自己的需求&#xff0c;我们需要自己定制。以下我主要是在官方mariadb:latest镜像的基础上&#xff0c;做一些定制化的操作如修改容器的编码格式。 /root/.pip目录下有两个文件&#xff1a; Dockerfile的文件内容如下&#xff1a;…

性能优化系列之你是否清楚浏览器的渲染过程?

文章の目录1、浏览器解析 HTML&#xff0c;生成 DOM Tree&#xff08;Parse HTML&#xff09;。2、浏览器解析 CSS&#xff0c;生成 CSSOM&#xff08;CSS Object Model&#xff09; Tree。3、JavaScript 会通过 DOM API 和 CSSOM API 来操作 DOM Tree 和 CSS Rule Tree&#x…

Docker安装Kibana整合Elasticsearch[包含账号密码设置]

文章目录一&#xff1a;拉取Es和Kibana镜像二&#xff1a;创建Es挂载目录2.1&#xff1a;挂载相关配置2.2&#xff1a;开放文件权限&#xff0c;否则后面运行容器会报错三&#xff1a;运行Es容器3.1: 运行参数说明3.2: 运行容器命令3.3: 开放防火墙四&#xff1a;运行Kibana容器…

十四、Kubernetes中pod配置详解、实例

1、概述 在kubernetes中基本所有资源的一级属性都是一样的&#xff0c;主要包含5部分&#xff1a; apiVersion <string> 版本&#xff0c;由kubernetes内部定义&#xff0c;版本号必须可以用 kubectl api-versions 查询到 kind <string> 类型&#xff0c;由kuber…

我辛辛苦苦做了一个月的项目,组长年底用来写了晋升PPT

最近有朋友跟我吐槽&#xff0c;9月10月辛辛苦苦做了一个多月的项目&#xff0c;是一个重点项目&#xff0c;自己还是开发主力&#xff0c;但年底组长用来写了晋升PPT&#xff0c;汇报的时候还写的可圈可点&#xff0c;完全就是他做的样子。 目录 1、我也曾盼望升职加薪 2、结…

【阶段二】Python数据分析NumPy工具使用03篇:数组的预处理、数组形状更改、数组转置与数组合并

本篇的思维导图: 数组的预处理 数据的类型转换 代码 结果 import numpy as

网站收录查询,常用的2种网站收录查询方法

在网站优化过程中&#xff0c;SEO人员通常都会非常关心网站的收录、索引情况&#xff0c;因为网站建立索引之后&#xff0c;才具有排名的条件。如何查询网站收录情况&#xff1f;今天我们聊聊常用的2种网站收录查询方法。第一种方法&#xff1a;通过site指令在搜索框查询 众多S…

【Python】sklearn机器学习之Meanshift聚类算法

文章目录基本原理sklearn调用基本原理 凡聚类者&#xff0c;必有中心。按照这个思路&#xff0c;如果某个区域满足聚类的要求&#xff0c;那么其自然中心与样本均值应该是几乎重合的&#xff0c;这也是MeanShift算法的基本逻辑。 假设现有100个点&#xff0c;然后随机选择1个…

day33【代码随想录】贪心算法之分发饼干、摆动序列、最大子序和、买卖股票的最佳时机 II

文章目录前言一、分发饼干&#xff08;力扣455&#xff09;二、摆动序列&#xff08;力扣376&#xff09;1、贪心算法2、动态规划三、最大子序和&#xff08;力扣53&#xff09;四、买卖股票的最佳时机 II&#xff08;力扣122&#xff09;前言 1、分发饼干 2、摆动序列 3、最大…

【Kuangbin区间DP】奶牛零食

4558. 奶牛零食 - AcWing题库 题意&#xff1a; 写了Kuangbin的三道DP&#xff0c;三道都不会QwQ 是不是该remake了.... 思路&#xff1a; 一开始我天真的以为那个题单全是线性DP&#xff0c;然后我就自然而然往线性DP的方向上想了呜呜 我设 dp[i][j]表示阶段 i &#xff…

你可以不用Git,但不能不会Git(一)概述

目录 一.什么是Git 二.为什么要使用Git 三.Git和SVN对比 四.Git工作流程 五.Git下载与安装 一.什么是Git Git历史 很多人都知道&#xff0c;林纳斯托瓦兹在1991年创建了开源的Linux&#xff0c;从此&#xff0c;Linux系统不断发展&#xff0c;已经成为最大的服务器系统…

Unity:从入门到入行【全面总结,建议收藏】

史上最全干货系列 一、unity的安装与使用 1.unity安装资源 方法一&#xff1a; 通过http://unity.cn官网进行下载&#xff0c;详细教程可见下方链接。 Unity新手入门&#xff1a;新手如何安装Unity_哔哩哔哩_bilibili​www.bilibili.com/video/BV1Yb4y1f7zK?spm_id_from333…

10_2、Java基本语法之注解(Annotation)的使用

一、注解的理解 1、jdk5.0新增 2、在JavaSE中&#xff0c;注解的使用目的比较简单&#xff0c;例如标记过时的功能&#xff0c;忽略警告等。在JavaEE/Android中注解占据了更重要的角色&#xff0c;例如用来配置应用程序的任何切面&#xff0c;代替JavaEE旧版中所遗留的…