基于中断/DMA方式的串口通信


一、基于中断的方式实现串口通信

1.使用STM32CubeMX配置项目

1.在STM32CubeMX中选择相应芯片
这里使用STM32F103C8芯片进行实现

在这里插入图片描述
2.配置引脚
在这里插入图片描述
3.配置RCC
在这里插入图片描述
4.配置SYS
在这里插入图片描述
5.配置USART1
在这里插入图片描述
6.配置NVIC
在这里插入图片描述
7.配置时钟
在这里插入图片描述
8.在项目设置中进行如下设置
在这里插入图片描述
在这里插入图片描述设置完成后,点击右上角GENERATE CODE 进行输出。

2.在keil中进行编程

1.在mian.c文件中先进行定义
在这里插入图片描述
2.编辑代码进行发送提示信息和接收中断
在这里插入图片描述
3.在while(1)中进行输入
在这里插入图片描述
4.编译
在这里插入图片描述
5.烧录
在这里插入图片描述
6.实现效果

fireTools 2023-10-29 16-43-24

3.使用示波器进行观察

1.设置示波器
在这里插入图片描述
2.输出结果
在这里插入图片描述
根据图片可得,该程序输出的高电平和低电平符合客观事实
波特率为0.91593Hz

二、使用DMA进行串口通信

1.使用STM32CubeMX配置项目

1.配置RCC
在这里插入图片描述
2.配置USRT1
在这里插入图片描述
在这里插入图片描述
3.配置DMA
在这里插入图片描述
4.配置时钟
在这里插入图片描述
设置完成后,点击右上角GENERATE CODE 进行输出。

2.在keil中进行编程

1.在main.c中进行定义以及设置输出
在这里插入图片描述
2.在while函数中写入代码
在这里插入图片描述
3.编写定义开始暂停代码
在这里插入图片描述
4.编译
在这里插入图片描述
5.烧录
在这里插入图片描述
6.实现结果

fireTools 2023-10-29 17-27-51

3.示波器观察波形

输出结果
在这里插入图片描述根据图片可得,该程序输出的高电平和低电平符合客观事实
波特率为1.002875Hz

三、总结

此次实验的内容为基于中断/DMA方式的串口通信。
基于中断/DMA方式的串口通信实验是深入学习嵌入式系统通信原理与技术的重要环节。
掌握了配置中断和DMA的基本步骤,包括寄存器设置、中断优先级的配置以及DMA通道的初始化等。中断方式在数据传输过程中具有更高的灵活性,而DMA方式则可以减轻CPU负担,提高传输效率。我学会了根据具体应用场景选择合适的通信方式。
通过这个实验,我不仅提高了自己在嵌入式系统通信方面的技能,而且培养了解决问题和持续学习的能力。我相信这些经验和知识将对我的未来学习产生积极的影响。

四、参考

HAL库中断方式进行串口通信
【STM32】HAL库 STM32CubeMX——DMA (串口DMA发送接收)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值