中断及串口通信

本文详细介绍了如何使用STM32的HAL库进行串口通信、外部中断控制灯亮灭以及串口DMA数据传输的配置和实现。通过CubeMX设置RCC、SYS、USART、NVIC和DMA,然后在Keil中编写代码,实现了中断接收和传输功能,以及外部中断触发灯的亮灭。实验结果显示了预期的效果,展示了STM32在嵌入式通信和控制方面的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 HAL库中断方式进行串口通信

1、通过CubeMX配置项目

1、设置RCC
在这里插入图片描述

2、设置SYS
在这里插入图片描述

3、设置USART
在这里插入图片描述

4、设置NVIC
在这里插入图片描述

5、创建项目
在这里插入图片描述

2、在keil上配置代码

1、打开在CubeMX上配置的项目
2、在main函数前定义全局变量
3、在main函数中设置接收中断
4、在main函数中的while循环里添加传输代码
在这里插入图片描述

5、在main函数下重写中断处理函数
在这里插入图片描述

6、main函数的全部代码
7、编译并烧录
在这里插入图片描述

3、效果

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

二、STM32外部中断方式控制灯的亮灭

1、通过STMCube配置项目

1、引脚配置:

A4输出控制灯的亮灭,设置为GPIO_OUTPUT
A1持续输出高电平,设置为GPIO_OUTPUT
A7持续输出低电平,设置为GPIO_OUTPUT
B5为模拟开关,设置为GPIO_EXIT5**(外部中断模式)**
在这里插入图片描述

2、配置EXIT
在这里插入图片描述

3、配置SYS
在这里插入图片描述

4、配置GPIO
在这里插入图片描述

5、代码创建勾出这个
6、创建项目
在这里插入图片描述

2、通过KEIL配置代码

1、打开生成的项目,找到stm32f1xx_it.c
2、找到EXTI9_5_IRQHandler函数,选中HAL_GPIO_EXIT_IRQHandler这个语句按F12跳到该函数
在这里插入图片描述

3、往下找到HAL_GPIO_EXTI_Callback这个函数

该函数是用户自己重写,可以在这里根据不同的中断处理不同的处理。在这里需要根据不同中断实现A4的亮灭
在这里插入图片描述

4、编译生成hex
5、通过FlyMCU进行烧录
在这里插入图片描述

3、结果

实验现象

三、CubeMX配置串口DMA数据传输

1、设置RCC
在这里插入图片描述

2、设置串口
在这里插入图片描述
在这里插入图片描述
3、DMA设置
在这里插入图片描述
在这里插入图片描述

4、时钟源设置
在这里插入图片描述

5、项目文件设置
在这里插入图片描述
在这里插入图片描述

6、创建工程
7、配置下载工具
在这里插入图片描述
8、测试历程:
添加数组发送数组

/* USER CODE BEGIN Init */
 uint8_t Senbuff[] = "\r\n**** Serial Output Message by DMA ***\r\n   UART DMA Test \r\n   Zxiaoxuan";  //定义数据发送数组
  /* USER CODE END Init */

定义while循环

while (1)
  {
    /* USER CODE END WHILE */
   HAL_UART_Transmit_DMA(&huart1, (uint8_t *)Senbuff, sizeof(Senbuff));
         HAL_Delay(1000);
    /* USER CODE BEGIN 3 */
  }

程序烧录
在这里插入图片描述
串口调试结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值