本章介绍STM32F1的DMA。在本章中,我们将利用STM32F1的DMA来实现串口数据传送,并在TFTLCD模块上显示当前的传送进度。
-
当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实行和完成。
-
DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程。
-
DMA通过硬件为RAM与IO设备开辟一条直接传送数据的通路,能使CPU的效率大为提高。
DMA简介
main函数
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "dma.h"
#define SEND_BUF_SIZE 8200 //发送数据长度,最好等于sizeof(TEXT_TO_SEND)+2的整数倍.
u8 SendBuff[SEND_BUF_SIZE]; //发送数据缓冲区
const u8 TEXT_TO_SEND[]={
"ALIENTEK WarShip STM32F1 DMA 串口实验"};
int main(void)
{
u16 i;
u8 t=0;
u8 j,mask=0;
float pro=0;//进度
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
LED_Init(); //初始化与LED连接的硬件接口
LCD_Init<