使用stm32cubemx和HAL库通过中断来控制LED灯和DMA通信原理

这篇博客介绍了如何使用STM32CubeMX和HAL库通过中断控制LED灯,实现串口通信,并利用DMA进行连续数据传输。详细步骤包括中断的定义、高低电平控制LED、中断实现串口通信、DMA的基本概念和传输方式,以及通过DMA连续发送数据的工程配置和代码实现。
摘要由CSDN通过智能技术生成

一、中断

1.定义

中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。

2.过程

中断发生:当CPU在处理某一事件A时,发生了另一事件B,请求CPU迅速去处理。
中断处理:CPU暂停当前的工作,转去处理事件B。
中断返回:当CPU将事件B处理完毕后,再回到事件A中被暂停的地方继续处理事件。
在这里插入图片描述

3.执行过程以及作用

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

二、高低电平控制控制LED灯亮和灭

1.进入STM32Cube,选择新建项目
在这里插入图片描述
2.搜索芯片并且创建工程
在这里插入图片描述
3.点击sys,将debug选项改为Serial Wire,在Rcc里的HSE选择Crystal/Ceramic Resonator
在这里插入图片描述
在这里插入图片描述
4.将PB0选为外部中断触发器,PA1是控制led灯
在这里插入图片描述
5.选择PLLCLK在这里插入图片描述
6.project里把toolchain那里改为MDK-ARM,再选择路径
在这里插入图片描述
7.创建工程
在这里插入图片描述
8.运行Keil5,在main.c里写入下列代码即可,然后运行烧录得出结果

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
	GPIO_PinState b0_pin = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0);  // 读取b0的状态
	b0_pin=1-b0_pin;
	switch (GPIO_Pin){//判断引脚
		case GPIO_PIN_0:
			HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1,1-b0_pin);  // 将a1写入与b0相同的电位
			break;
	}
	
}

注:该操作基于 用stm32CubeMX实现LED流水灯.不会点这里
9.结果在这里插入图片描述

二、中断实现串口通信

1.创建工程如上
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
选择UASRT1,将mode改为异步通信,选择下面的NVIC Setting,将enabled选上。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
2.进入Keil5,进

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值