串口传输用中断实现的话,要频繁的进入中断函数,这样无疑增加MCU的负担,干扰正常程序的运行,对于一些实时性强的应用,如数字显示应用中,液晶屏显示可能受影响而不能正常显示。用DMA实现串口收发数据,进行数据收发过程中,不需要MCU的干预,由DMA独立完成数据的收发,接收或者发送完成后才进入中断做后续处理,因此MCU使用效率更高。
华大提供的例程中,对于串口DMA收发的应用比较简单,我这里结合以前的经验将串口收发用DMA实现。
使用华大免费提供的DEMO板D的基础上实现,MCU型号是HC32F460,当前例程使用的资源简单介绍
1,拥有 2 个 DMA 控制单元,共 8 个独立通道, 可以独立操作不同的 DMA 传输功能;
2,有4个串行收发器模块(USART单元),能够灵活地与外部设备进行全双工数据交换;
实现了功能,
1,系统滴答初始化及延时,
2,串行收发数据,用DMA实现,一次收发数据最大USART_DATA_BUFF_SIZE-1个字符,
3,用接收超时中断实现一次接收数据少于(USART_DATA_BUFF_SIZE-1)个字符的传输,
有4个文件,分别如下
Systick.c 系统滴答文件
/******************************************************************************
* 文件名 :SysTick.c
* 描述 :SysTick
版权声明:本文为qq_15548761原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。