OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5114|回复: 2

串口接收字符串并存储在sd卡

[复制链接]

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2020-9-30
在线时间
22 小时
发表于 2020-12-6 17:09:04 | 显示全部楼层 |阅读模式
各位大佬好,我在接收中断回调函数里面写了一段存储的函数:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) //接收完成中断回调函数,这里设置的是每次接收一个就中断一次。
        {
          
                if(huart->Instance==USART3)
                {
                  arry[i]=*((huart->pRxBuffPtr)-1); //因为buff只有一个位置,所以我们每次都要让指针退回一格,回到原来的位置好让下次用。
                  HAL_UART_Transmit(&usart3_handler,&arry[i],1,1000);
         
                       
                           if(arry[i]=='\n')
                                {  
                          res=f_open(&fil,"0:/message.txt",FA_CREATE_ALWAYS|FA_WRITE);//打开文件设置为创建和读模式
                              for(j=0;j<i;j++)
                                        {
                                        res=f_write(&fil,&arry[j],1,&bww);                            //写文件
                                        }
                                f_close(&fil);
                                        i=0;
                                        j=0;
                                }
         }
               
        }

但是程序运行的结果,在sd卡里面并没有存进去数据,打开message文件夹,里面为空。
这是为什么
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2019-4-27
在线时间
12 小时
发表于 2021-7-21 10:52:26 | 显示全部楼层
回复 支持 反对

使用道具 举报

3

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2020-8-24
在线时间
50 小时
发表于 2021-7-21 17:20:55 | 显示全部楼层
没看到 i有递增操作, 应该每次都是写在同一个位置arr数组里只有一个字节\r , 而且中断里不建议做复杂操作的, 文件io 的操作更是使不得呀, 如果串口同时发送多行 串口中断里肯定处理不过来的,  建议用队列操作
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 11:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表