STM32F103跑FREERTOS系统USART利用DMA接收数据程序

STM32F103跑FREERTOS系统USART利用DMA接收数据程序
STM32F103跑FREERTOS系统USART利用DMA接收数据程序

/***************************************************************** * @brief TaskUsart1.

* @param None

* @retval None

* @brief: Usart1数据缓冲于RxBuffer1

帧之间不允许少于10ms,帧内字节间不允许大于10ms

*******************************************************************/ void TaskUsart1( void *pvParameters )//

{

uint16_ti=0,j=0;

//记录缓存字节数

uint16_toldcnt=MAXUsart1,cnt=0;

uint8_tbuf[MAXUsart1];

//配置

USARTX_Config(USART1,115200);

//DMA

USART1_DR_DMA_Config();

for( ; ; )

{

//查询缓存区当前余量

cnt=(uint32_t)DMA1_Channel5->CNDTR;

//余量无变化

if(cnt==oldcnt)

{

//收到数据

if(i)

{

//检验过

if(Framecheck(buf,i))

//解析

Framedecode(buf);

i=0;

}

}

//余量有变化

else

{

//变化量

cnt=MAXUsart1+oldcnt-cnt;

cnt=cnt%MAXUsart1;

//转移

for(j=0;j

buf[i++]=RxBuffer1[((MAXUsart1-oldcnt+j)%MAXUsart1)];

oldcnt=(uint32_t)DMA1_Channel5->CNDTR;

}

vTaskDelay(10);

}

}

相关主题
相关文档
最新文档