linux串口发送数据到stm32,STM32能实现持续接收串口发送的数据并存到内存卡中吗?...

正点原子老师,您好,我现在做的是让板子的串口1持续接受数据并存到SD卡中的.txt文件中,下面是我的程序,是用第40个例程FATFS改的。但是现在只能往.txt文件里面写一行乱码,不知道怎么回事,请老师给看看。

[mw_shl_code=c,true]这个是主循环:

while(1)

{

if(USART_RX_STA&0x8000)

{

len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度

res=f_open(&f_txt,"123.txt",FA_OPEN_ALWAYS | FA_WRITE);

f_write(&f_txt,USART_RX_BUF,len,(UINT*)&br);

f_lseek(&f_txt,len);

USART_RX_STA=0;

f_close(&f_txt);

}

}

下面是串口中断程序,接收到11,11表示接受完成。

void USART1_IRQHandler(void)

{

u8 Res;

#ifdef OS_TICKS_PER_SEC

OSIntEnter();

#endif

if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)

{

USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清除中断标志[/mw_shl_code]

[mw_shl_code=c,true]     Res =USART_ReceiveData(USART1);//(USART1->DR); //读取接收到的数据

if((USART_RX_STA&0x8000)==0)// 接受未完成

{

if(USART_RX_STA&0x4000)//接收到了11

{

if(Res!=0x11)USART_RX_STA=0;//接收错误重新开始[/mw_shl_code]

[mw_shl_code=c,true]else USART_RX_STA|=0x8000;//接收完成了[/mw_shl_code]

[mw_shl_code=c,true] }

else //还没有收到11[/mw_shl_code]

[mw_shl_code=c,true]     {

if(Res==0x11)USART_RX_STA|=0x4000;

else

{

USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;

USART_RX_STA++;

if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0 //接收数据错误重新开始接收}

}

}

}

#ifdef OS_TICKS_PER_SEC

OSIntExit();

#endif

}

#endif

[/mw_shl_code]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值