|
u8 Text[]={"STM32 DMA 串口实验"};
#define SIZE sizeof(Text)
int main()
{
int pro=0;
u8 ledtime,t=0;
SystemInit();
delay_init(72);
LED_Init();
NVIC_Configuration();
MYDMA_Config(DMA1_Channel4,(u32)&USART1->DR,(u32)Text,SIZE);//DMA1通道4,外设为串口1
//GPIO_ResetBits(GPIOA,GPIO_Pin_8);
while(1)
{
t=KEY_Scan();
if(t==1)
{
USART_DMACmd(USART1, USART_DMAReq_Tx, ENABLE); //USART1-> CR3=1<<7;
MYDMA_Enable(DMA1_Channel4);//开始一次DMA传输
while(1)
{
if(DMA_GetFlagStatus(DMA1_FLAG_TC4) == SET)//等待通道4传输完成
{
DMA_ClearFlag(DMA1_FLAG_TC4); //清除发送完成标志
break;
}
}
pro = DMA_GetCurrDataCounter(DMA1_Channel4); //得到当前还剩余多少个数据
if(pro==0) GPIO_ResetBits(GPIOD,GPIO_Pin_2); //传输完成led2点亮
}
}
} |