完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
概述本篇文章主要介绍如何使用STM32CubeMX移植到雅特力AT32F403AVGT7,并通过双串口输出打印。 直接存储器访问(DMA)用于在外设与存储器之间以及存储器与存储器之间提供高速数据传输。可以在无需任何CPU操作的情况下通过DMA快速传输传输。这样节省的CPU资源可供其它操作使用。 DMA允许在后台执行数据传输,无需Cortex-M3处理器干预。在此操作过程中,主处理器可以执行其它任务,仅当整个数据块需要处理时,才会中断主处理器。这样即使传输大量数据也不会对系统性能造成太大影响。 DMA主要用于为不同的外设模块实现集中数据缓冲存储(通常在系统SRAM中)。与分布式解决方案(其中每个外设都需要实现自己的本地数据存储)相比,DMA解决方案在硅片成本和功耗方面的成本较低。 根据使用的产品型号的不同,有一个或两个DMA模块。 本篇文章主要介绍如何使用STM32CubeMX实现串口DMA读取,并且打印出去。 硬件准备首先需要准备一个开发板,这里我准备的是雅特力AT32F403AVGT7的开发板: 选择芯片型号雅特力AT32F403AVGT7兼容STM32F103系列,故选取STM32f103VG进行开发。 配置时钟源HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用内置的时钟源,故都选择Disable选项,如下所示: 配置时钟树雅特力AT32F403AVGT7最高频率到240M,但是STM32F1的最高主频到72M,同时使用不使用外部晶振时候,最高速度只能到64M,所以配置64即可: 串口配置本次实验使用的串口2,串口3进行串口通信,波特率配置为115200。 配置DMA在DMA 设置中,Mode有两种模式,一种是普通模式(Normal),使用一次发送语句就发一次,另一种是循环模式(Circula),使用一次发送会一直发送。这里接收选择循环模式。 中断在中断设置里打开串口2,3的中断。 生成工程设置注意在生产工程设置中不能出现中文,不然会报错。 代码生成设置最后设置生成独立的初始化文件 生成代码代码编写在main.c中,添加头文件,若不添加会出现 identifier "FILE" is undefined报错。
变量定义 ,在main.c中添加。
函数声明和串口重定向,这里使用串口3进行打印,在main.c中添加。
开启串口IDLE中断,在main.c中添加。
串口DMA获取,在main.c中添加。
主循环,在main.c中添加。
中断外部变量引用,在stm32f0xx_it.c中添加。
串口2,3中断函数,在stm32f0xx_it.c中添加。
结果演示开机会显示双串口DMA接收例程。 串口2发送数据会在串口3中打印,但是会显示接收的是串口2。 串口3发送数据会在串口3中打印,但是会显示接收的是串口3。 视频教学 |
|
相关推荐
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12009 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 13:15 , Processed in 0.606928 second(s), Total 40, Slave 33 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号