第7周作业--中断及串口通信进阶

目录

一  实验要求

二、中断模式控制LED灯

1.建立工程

三、串口中断

1.工程的创建

 2.进行烧录

3.运行结果

四、STM32采用串口DMA方式发送数据

1.新建工程

2.烧录

 3.实验结果

 五 实验总结


一  实验要求

学习stm32中断、DMA通信原理和编程方法。使用stm32tubemx和HAL库分别完成以下编程练习:

1. 用stm32F103核心板的GPIOA端一管脚接一个LED,GPIOB端口一引脚接一个开关(用杜邦线模拟代替)。采用中断模式编程,当开关接高电平时,LED亮灯;接低电平时,LED灭灯。

2. 采用串口中断方式重做上周的串口通信作业,分别实现:1)当stm32接收到字符“s”时,停止持续发送“hello windows!”; 当接收到字符“t”时,持续发送“hello windows!”(提示:采用一个全局标量做信号灯);2)当stm32接收到字符“stop stm32!”时,停止持续发送“hello windows!”; 当接收到字符“go stm32!”时,持续发送“hello windows!”(提示:要将接收到的连续字符保存到一个字符数组里,进行判别匹配。写一个接收字符串的函数。参考:STM32的USART窗口通讯程序——串口通讯_HarrietLH的博客-CSDN博客,此学长用的是中断方式,标准库,但是总体思路一样)。

3. STM32采用串口DMA方式,用115200bps或更高速率向上位机连续发送数据。

二、中断模式控制LED灯

1.建立工程

首先选择STM32F103C8芯片

在这里插入图片描述

 点击System Core,进入里面的SYS,在debug那里选择Serial Wire

 在这里插入图片描述

 进入上面的RCC,将HSE那里设置为Crystal/Ceramic Resonator

在这里插入图片描述

 来到Clock Configuration选项

在这里插入图片描述

 将PB6管脚的引脚模式设置为输出模式:GPIO_Output。
将PA2管脚的引脚模式设置为外部中断:GPIO_EXTI2。

在这里插入图片描述

选择对应的外部中断线,点击Enabled。 

在这里插入图片描述

 其次,设置中断的优先级,再设置时钟即可。

在这里插入图片描述

然后选择Project Manager,选择MDK/ARM,再创建工程名 

在这里插入图片描述

 在Code Generator中勾选如图选项

在这里插入图片描述

 2.代码

在这里插入图片描述

 在这里插入图片描述

三、串口中断

1.工程的创建

前面步骤与之前相同,只需要增添以下步骤
找到USART1,在Mode中选择Asynchronous

在这里插入图片描述

进入NVIC Settings界面,勾选Enabled,使能中断。

 在这里插入图片描述

最后取好文件名,选择MDK-ARM即可生成工程文件。 

在这里插入图片描述

 

 找到main.c文件

勾选生成hex文件

在这里插入图片描述

 2.进行烧录

在这里插入图片描述

3.运行结果

在这里插入图片描述 

四、STM32采用串口DMA方式发送数据

1.新建工程

与之前步骤相同,先找到STM32F103C8芯片,设置与上实验相同
此外进行以下操作,可以看到以下参数:波特率为115200 Bits/s;传输数据长度为8 Bit;无奇偶检验;停止位为1

在这里插入图片描述

勾选该选项,使其能中断
在这里插入图片描述 

在同一界面下点击DMA setting->Add添加通道 

 在这里插入图片描述

 然后来到Clock Configuration界面

 在这里插入图片描述

最后,再取号文件名生成工程文件 

在这里插入图片描述

 

2.烧录

在这里插入图片描述

 3.实验结果

在这里插入图片描述

 五 实验总结

总结:通过此次学习我学会了如何使用串口DMA方式向上位机连续发送数据,如何使用串口中断,更加强化了我的动手能力和学习新知识能力,学习就是反复从错误中纠正自己。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值