181 lines
3.5 KiB
C
Raw Permalink Normal View History

2021-07-28 13:15:22 +08:00
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "LCD.h"
#include "Dis_Picture.h"
#include "Text.h"
#include "GBK_LibDrive.h"
#include "mpu.h"
#include "dma.h"
/*********************************************************************/
//DMA ʵ<><CAB5>
//STM32H7<48><37><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>-HAL<41><EFBFBD><E2BAAF><EFBFBD>
//DevEBox <20><>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>mcudev.taobao.com
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>shop389957290.taobao.com
/*********************************************************************/
#define SEND_BUF_SIZE 7800 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>,<2C><><EFBFBD>õ<EFBFBD><C3B5><EFBFBD>sizeof(TEXT_TO_SEND)+2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
u8 SendBuff[SEND_BUF_SIZE]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
const u8 TEXT_TO_SEND[]={" mcudev.taobao.com STM32H7XXX DMA <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5> "};
u16 i;
u8 t=0;
u8 j,mask=0;
float pro=0;
u8 tbuf[32];
int main(void)
{
Cache_Enable(); //<2F><><EFBFBD><EFBFBD>L1-Cache
Stm32_Clock_Init(160,5,2,4); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>,400Mhz
HAL_Init(); //<2F><>ʼ<EFBFBD><CABC>HAL<41><4C>
delay_init(400); //<2F><>ʱ<EFBFBD><CAB1>ʼ<EFBFBD><CABC>
uart_init(115200); //<2F><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>
LED_Init(); //<2F><>ʼ<EFBFBD><CABC>LEDʱ<44><CAB1>
KEY_Init();
MPU_Memory_Protection(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ش洢<D8B4><E6B4A2><EFBFBD><EFBFBD>
LCD_Init(); //<2F><>ʼ<EFBFBD><CABC>2.0<EFBFBD><EFBFBD> 240x320 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LCD<43><44>ʾ
GBK_Lib_Init(); //Ӳ<><D3B2>GBK<42>ֿ<EFBFBD><D6BF><EFBFBD>ʼ<EFBFBD><CABC>--(<28><><EFBFBD><EFBFBD>ʹ<EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD>ֿ<EFBFBD><D6BF><EFBFBD>Һ<EFBFBD><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6B1BE><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֿ<EFBFBD><D6BF><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
LCD_Clear(WHITE); //<2F><><EFBFBD><EFBFBD>
MYDMA_Config(DMA2_Stream7); //<2F><>ʼ<EFBFBD><CABC>DMA
Draw_Font16B(16,16,RED," STM32H7 DMA ");
Draw_Font16B(16,32,BLUE," Ƕ<><C7B6>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ");
Draw_Font16B(16,48,BLUE,"mcudev.taobao.com");
Draw_Font24B(16,64,RED, "KEY2:Start");
//<2F><>ʾ<EFBFBD><CABE>ʾ<EFBFBD><CABE>Ϣ
j=sizeof(TEXT_TO_SEND);
for(i=0;i<SEND_BUF_SIZE;i++)//<2F><><EFBFBD><EFBFBD>ASCII<49>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if(t>=j)//<2F><><EFBFBD><EFBFBD>з<EFBFBD>
{
if(mask)
{
SendBuff[i]=0x0a;
t=0;
}else
{
SendBuff[i]=0x0d;
mask++;
}
}
else//<2F><><EFBFBD><EFBFBD>TEXT_TO_SEND<4E><44><EFBFBD><EFBFBD>
{
mask=0;
SendBuff[i]=TEXT_TO_SEND[t];
t++;
}
}
POINT_COLOR=BLUE;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ɫ
i=0;
while(1)
{
t=KEY_Scan(0);
if(t==KEY2_PRES)//KEY0<59><30><EFBFBD><EFBFBD>
{
printf("\r\nDMA DATA:\r\n");
Draw_Font24B(8,90,RED, "Start Transimit.. ");
Draw_Font24B(8,120,RED," % ");//<2F><>ʾ<EFBFBD>ٷֺ<D9B7>
HAL_UART_Transmit_DMA(&UART1_Handler,SendBuff,SEND_BUF_SIZE);//<2F><><EFBFBD><EFBFBD>DMA<4D><41><EFBFBD><EFBFBD>
//ʹ<>ܴ<EFBFBD><DCB4><EFBFBD>1<EFBFBD><31>DMA<4D><41><EFBFBD>͵ȴ<CDB5>DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩ<D2BB>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD>
//ʵ<><CAB5>Ӧ<EFBFBD><D3A6><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڼ䣬<DABC><E4A3AC><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
while(1)
{
if(__HAL_DMA_GET_FLAG(&UART1TxDMA_Handler,DMA_FLAG_TCIF3_7))//<2F>ȴ<EFBFBD>DMA2_Steam7<6D><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
__HAL_DMA_CLEAR_FLAG(&UART1TxDMA_Handler,DMA_FLAG_TCIF3_7);//<2F><><EFBFBD><EFBFBD>DMA2_Steam7<6D><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־
HAL_UART_DMAStop(&UART1_Handler); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD><D4BA>رմ<D8B1><D5B4><EFBFBD>DMA
break;
}
pro=__HAL_DMA_GET_COUNTER(&UART1TxDMA_Handler);//<2F>õ<EFBFBD><C3B5><EFBFBD>ǰ<EFBFBD><C7B0>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD>ٸ<EFBFBD><D9B8><EFBFBD><EFBFBD><EFBFBD>
pro=1-pro/SEND_BUF_SIZE; //<2F>õ<EFBFBD><C3B5>ٷֱ<D9B7>
pro*=100; //<2F><><EFBFBD><EFBFBD>100<30><30>
sprintf((char*)tbuf,"%5.2f % ",pro); //<2F><>ʾ<EFBFBD>޷<EFBFBD><DEB7><EFBFBD>ʮ<EFBFBD><CAAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Draw_Font24B(16,120,RED, tbuf);//<2F><>ʾ<EFBFBD>ٷֺ<D9B7>//<2F><>ʾ100%
}
Draw_Font24B(8,120,RED, "100% ");//<2F><>ʾ<EFBFBD>ٷֺ<D9B7>//<2F><>ʾ100%
Draw_Font24B(8,90, RED, "Transimit Finished!");//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
i++;
delay_ms(10);
if(i==20)
{
LED2_Toggle;//<2F><>ʾϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
i=0;
}
}
}
/*********************************************************************/
//DMA ʵ<><CAB5>
//STM32H7<48><37><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>-HAL<41><EFBFBD><E2BAAF><EFBFBD>
//DevEBox <20><>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD>
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>mcudev.taobao.com
//<2F>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>̣<EFBFBD>shop389957290.taobao.com
/*********************************************************************/