你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
天下乌鸦一般黑 发表于 2015-8-13 20:10 串口空闲中断+ dma双缓冲接收~非常效率。
STM32隐藏
5.18活动板子会不会是STM32L4呢
STM32 CUBE软件中找不到STM32L4系列单片机
Your UAT Feedback is needed within today.
应用
AAA
tiwen
BBBB
aaa
2222
终于来了一个仔细研究的朋友了。其实这个代码还有很多优点~~~~
#include "LED.h"
void MYDMA_Config(uint32_t par,uint32_t mar,uint16_t data)//配置DMAx_CHx
{ DMA_InitTypeDef DMA_InitStructure;
NVIC_DMA(); //配置DMA中断
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);
DMA_InitStructure.DMA_BufferSize=data; //数据传输量
DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralDST; //传输方向从内存到外设
DMA_InitStructure.DMA_M2M=DMA_M2M_Disable; //禁止内存到内存传输
DMA_InitStructure.DMA_MemoryBaseAddr=mar; ////DMA 存储器地址
DMA_InitStructure.DMA_PeripheralBaseAddr=par; //DMA外设地址
DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable; //外设地址不增
DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable; //内存地址自增
DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_Byte; //外设数据单位
DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_Byte; //内存数据为8位
DMA_InitStructure.DMA_Priority=DMA_Priority_Medium; //优先级中等
DMA_InitStructure.DMA_Mode=DMA_Mode_Normal; //普通模式
DMA_Init(DMA1_Channel7,&DMA_InitStructure);
DMA_Cmd(DMA1_Channel7,ENABLE);
DMA_ITConfig(DMA1_Channel7,DMA_IT_TC,ENABLE);
}
void NVIC_DMA()
{ NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel=DMA1_Channel7_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;
NVIC_Init(&NVIC_InitStructure);
}
void DMA1_Channel7_IRQHandler()
{ if(DMA_GetFlagStatus(DMA1_FLAG_TC7)==SET)
{ GPIO_ResetBits(GPIOA,GPIO_Pin_5);
}
DMA_ClearFlag(DMA1_FLAG_TC7);
}
int main()
{ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
MyUSART2_Init();
LedInit();
j=sizeof(table);
for(i=0;i<SEND_BUF_SIZE;i++)
{ SendBuff[i]=0xff;
// if(i>=j)
// { SendBuff[i]=0x0a;
// break;
//}
}
MYDMA_Config((uint32_t)&USART2->TDR,(uint32_t)SendBuff,SEND_BUF_SIZE);//外设为串口1,存储器为SendBuff,长度为:SEND_BUF_SIZE.
USART_DMACmd(USART2,USART_DMAReq_Tx,ENABLE);
GPIO_SetBits(GPIOA,GPIO_Pin_5);
while(1);
}
一直在用,但没有RTOS