初级会员

- 积分
- 123
- 金钱
- 123
- 注册时间
- 2015-4-20
- 在线时间
- 0 小时
|
5金钱
以DMA方式使用串口收发数据,
单独发送数据时正常,可以在串口助手打印出来
但是单独接收数据时,在串口助手 “发送”数据,例如“1”,无法在终端打印出来
以下是程序:
/*********************************ADC.c****************************************************************/
//注释掉的为串口发送
#include "dma.h"
u8 SendBuff[BuffSize];
u8 value;
void USRAT1_DMA_Init(void)
{
DMA_InitTypeDef DMA_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);
//DMA_InitStructure.DMA_BufferSize=BuffSize;
DMA_InitStructure.DMA_BufferSize=1;
//DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralDST;
DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC;
DMA_InitStructure.DMA_M2M=DMA_M2M_Disable;
//DMA_InitStructure.DMA_MemoryBaseAddr=(u32)SendBuff;
DMA_InitStructure.DMA_MemoryBaseAddr=(u32)(&value);
DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_Byte;
DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Disable;
DMA_InitStructure.DMA_Mode=DMA_Mode_Normal;
DMA_InitStructure.DMA_PeripheralBaseAddr=(int)(&USART1->DR);
DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_Byte;
DMA_InitStructure.DMA_Priority=DMA_Priority_Medium;
DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;
//DMA_Init(DMA1_Channel4,&DMA_InitStructure);
//DMA_Cmd(DMA1_Channel4,ENABLE);
DMA_Init(DMA1_Channel5,&DMA_InitStructure);
DMA_Cmd(DMA1_Channel5,ENABLE);
}
/*********************************main.c****************************************************************/
#include "LED.h"
#include "usart1.h"
#include "stdio.h"
#include "dma.h"
extern u8 SendBuff[BuffSize];
extern u8 value;
int main(void)
{
u16 i;
LED_BEEP_Init();
KEY_Init();
delay_init();
EXTIX_Init(); NVIC_Configuration();
USART1_Init(9600);
USRAT1_DMA_Init();
// //以DMA方式使用串口发送数据
// LED0=0;
// printf("\r\n\r\n usart1 DMA!\r\n\r\n");
// for(i=0;i<BuffSize;i++)
// {
// SendBuff='b';
// }
// for(;;)
// {
// LED1=0;
// delay_ms(100);
// LED1=1;
// delay_ms(100);
// }
//以DMA方式使用串口接收数据
printf("\r\n\r\n usart1 DMA!!!\r\n\r\n");
USART_DMACmd(USART1,USART_DMAReq_Rx,ENABLE);
printf("%c",value);
for(;;)
{
LED1=0;
delay_ms(100);
LED1=1;
delay_ms(100);
}
}
|
|