接上一篇的正点原子战舰读取sd卡文本文件的主程序。
#include “sys.h”
#include “delay.h”
#include “usart.h”
#include “led.h”
#include “lcd.h”
#include “key.h”
#include “usmart.h”
#include “malloc.h”
#include “sdio_sdcard.h”
#include “w25qxx.h”
#include “ff.h”
#include “exfuns.h”
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
/************************************************
************************************************/
FIL fp0;
FILE* fp1;
FRESULT res0;
unsigned int brf;
unsigned int *admin_p;
int iii;
int j;
UINT br0,bw0;
u8 ReadBuf[500];
char buf99[100];
char str99[100];
double doublexy[400];
int mm;
double StrToDouble(char *s);
double xx[100];
double yy[100];
int ttt;
int ggg;
//8
//***
//*****************************************************************
int main(void)
{
u32 total,free;
u8 t=0;
u8 res=0;
u8 tbuf[500];
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
usmart_dev.init(72); //初始化USMART
LED_Init(); //初始化与LED连接的硬件接口
KEY_Init(); //初始化按键
LCD_Init(); //初始化LCD
my_mem_init(SRAMIN); //初始化内部内存池
POINT_COLOR=RED; //设置字体为红色
while(SD_Init())//检测不到SD卡
{LCD_ShowString(30,150,200,16,16,"SD Card Error!");delay_ms(500); LCD_ShowString(30,150,200,16,16,"Please Check! ");delay_ms(500);LED0=!LED0;//DS0闪烁
}
exfuns_init(); //为fatfs相关变量申请内存
f_mount(fs[0],“0:”,1); //挂载SD卡
memset(str99,0,sizeof(str99));
memset(buf99,0,sizeof(buf99));
LCD_Fill(30,150,240,150+16,WHITE); //清除显示
while(exf_getfree("0",&total,&free)) //得到SD卡的总容量和剩余容量
{LCD_ShowString(30,150,200,16,16,"SD Card Fatfs Error!");delay_ms(200);LCD_Fill(30,150,240,150+16,WHITE); //清除显示 delay_ms(200);LED0=!LED0;//DS0闪烁
}
res0=f_open(&fp0,“1.txt”, FA_READ );
if(res0!=FR_OK)
{
LCD_ShowString(30,150,200,16,16,“f_open() fail!”);
}
else
{
LCD_ShowString(30,150,200,16,16,“f_open() okok!”);
}
f_read(&fp0,ReadBuf,500,&br0);
sprintf((char*)tbuf,“br0:%d”,br0);
LCD_ShowString(30,210,210,16,16,tbuf);
delay_ms(1000);
LCD_Clear(WHITE);
LCD_Clear(WHITE);j=0;mm=0;for(iii=0;iii<br0;iii++){ delay_ms(5);if(ReadBuf[iii]!=','){ LCD_ShowString(30,170,200,16,16,"1234"); str99[j]=ReadBuf[iii];sprintf((char*)tbuf,"%s",str99);LCD_ShowString(30,210,210,16,16,tbuf); delay_ms(1000);LCD_Clear(WHITE);j++;}else if(ReadBuf[iii]==',')//读取到一个字符数组;放到里面。把字符数组,变为浮点数{LCD_ShowString(30,170,200,16,16,"ef0f"); doublexy[mm]=StrToDouble(str99);mm++;memset(str99,0,sizeof(str99));j=0;}}sprintf((char*)tbuf,"mm:%d",mm); LCD_ShowString(30,210,210,16,16,tbuf); for(iii=0;iii<mm;iii++){sprintf((char*)tbuf,"Time:%.2f",doublexy[iii]); LCD_ShowString(30,210,210,16,16,tbuf);delay_ms(500);LCD_Clear(WHITE);}ttt=0;ggg=0;for(iii=0;iii<br0;iii++){if(iii%2==0)//偶数,放到y坐标{xx[ttt]=doublexy[iii];ttt++; }else { yy[ggg]=doublexy[iii];ggg++;} }for(iii=0;iii<br0/12;iii++){sprintf((char*)tbuf,"xx:%.2f",xx[iii]); LCD_ShowString(30,210,210,16,16,tbuf);delay_ms(1000);LCD_Clear(WHITE);}for(iii=0;iii<br0/12;iii++){sprintf((char*)tbuf,"yy:%.2f",yy[iii]); LCD_ShowString(30,210,210,16,16,tbuf);delay_ms(1000);LCD_Clear(WHITE);}res0 = f_close(&fp0);while(1);
}
//字符串转double
double StrToDouble(char *s)
{
int i = 0;
int k = 0;
double j;
int flag =1;
double result = 0.0;
if (s == NULL)
{
// printf(“输入字符串为空”);
// exit(-1);
return 0;
}while (s[i] == ' ')
{i++;
}
if (s[i] == '+')
{i++;
}
if (s[i] == '-')
{i++;flag = -1;
}
while (s[i] != '\0' && s[i] != '.')
{if (s[i] < '0' || s[i] > '9'){// printf("字串含有非数字字符,无法转换!\n");return 0;// exit(-1);}j = (s[i] - '0')*1.0;result = result * 10 + j;if((result>0x7fffffff)){return 0;}i++;
}
if (s[i] == '.')
{i++;while (s[i] != '\0'){if (s[i] < '0' || s[i] > '9'){//printf("字串含有非数字字符,无法转换!\n");return 0;}k++;j = s[i] - '0';result = result + (1.0 * j) / pow(10.0, k); //编译时候此处有警告i++;}
}
result = flag * result;
return result;
}
接上一篇的正点原子战舰读取sd卡文本文件的主程序。相关推荐
- 《Arduino》开发 TFT_eSPI-master 库 之用 ESP32 读取SD卡上的图片并显示在1.14IPS屏幕上
前几天解决了 TFT_eSPI-master 库 图片取模问题,但尽管是ESP32的 flash 也无法存储太多图片的数组,因此我找到了ESP32从SD卡读取图片并显示在LCD屏幕上的方法,SD卡可以 ...
- 读取SD卡里面的BMP文件 显示到TFT上
读取SD卡里面的BMP文件 显示到TFT上 http://blog.csdn.net/yunxianpiaoyu/article/details/8841755 我刚好最近做了一个BMP565格式的图 ...
- stm32 arduino 读取sd卡并在lcd(jlx12864)上播放badapple
目录 前言 引脚连接 代码示例 问题排查 1. sd卡无法读取 2. lcd无显示 前言 要问什么是测试单片机控制单色屏幕的最佳办法,我想badapple应该当之无愧,经典程度如helloworld. ...
- 正点原子mysql_正点原子战舰开发板硬件原理图与PCB
[实例简介] 正点原子的STM32F103新战舰开发板的硬件原理图与PCB,且PCB含三维元器件封装. [实例截图] [核心代码] 1d489e5a-fad4-4456-aeb8-6225947162 ...
- 捣鼓篇之— 正点原子DS100mini示波器拆解
2020年的双十一的时候,下手买了正点原子发布的DS100mini示波器,主要是小巧,便宜实用,如今距离我收到这个示波器已经快一个月啦,今天终于有了点时间,来一个开箱大拆机! 第一步:假开箱(之前已经 ...
- stm32 读取sd卡图片显示_「正点原子STM32Mini板资料连载」第三十五章 汉字显示实验...
1)实验平台:正点原子STM32mini开发板 2)摘自<正点原子STM32 不完全手册(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第三十五章 汉字显示实验 汉字显示在 ...
- 单片机读取SD卡中BMP图片文件并送往TFT彩屏上显示(测试成功)(二)
二.软件部分 软件中INI_FLAG为设置的一个标志位,通过置1该位可以控制发送或接受数据速度.因为在初始化阶段SD卡操作需要适当放缓,而初始化成功后可以加快数据传动速率. 1>往SD卡写一个字 ...
- STM32工作笔记001---认识开发板资源-以正点原子战舰版开发板为例
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 这里只把不太明白的写上. 1.DS18B20是湿度传感器 DS18B20是常用的数字温度传感器,其 ...
- RK3399平台开发系列讲解(疑难问题篇)11.2、如何提高读取SD卡的速度
文章目录 高速读取的条件 解决问题 平台 内核版本 安卓版本 RK3399 Linux4.4 Android7.1 高速读取的条件 经了解,USB的BULK_ONLY和UFI协议,我们知道高速主要是大 ...
最新文章
- 【AIX 命令学习】加载与卸载文件系统!
- 手动删除SVCH0ST.EXE的方法
- JDK1.8源码阅读系列之二:LinkedList
- 【Py面试题】找到数组或整数列表中连续子序列的最大和
- Android --- java.lang.RuntimeException: Can‘t create handler inside thread that has not called Loop
- Centos6.5 安装apache2.4.33部署教程
- JDBC连接MySQL数据库及示例
- 七夕秀恩爱新姿势!这波操作我给十分!
- 鼓励参与计算机考试宣传标语,诚信考试的宣传标语(精选60条)
- 我为什么反对 Google 拍卖 Android 搜索引擎选项?
- 程序设计实习MOOC / 程序设计与算法(二)第二周测验(2018春季)
- TCP数据的传输过程
- 网络安全与信息安全【知识点】
- 读书笔记(创业维艰)
- 【设计模式】Unity3D 观察者模式
- PAT 1002 写出这个数 (20分)(Java)
- 20皇后的不是很正确的解法
- 如何进入/home/user/.wine
- 进击的Android注入术
- JAVA入门-菜鸟篇-
热门文章
- 数字集成电路设计-1-用一个mux和一个inv实现异或
- java.sql.SQLException: Access denied for user 'pc'@'localhost' (using passw
- Visual Studio 2013安装使用方法
- LogiScope100MHZ 16通道逻辑分析仪
- 正则 [.\n]* (.|\n)* 区别
- CRM系统主要包含什么内容
- 手机摄像头模组涉及的领域以及镜头的选择
- 物理内存是什么是计算机的显卡内存吗,物理内存使用率过高_任务管理器里的物理内存是什么,CPU使用率很低,但......
- 深度学习之 DCGAN 及TensorFlow 实现
- ubuntu搜狗输入法中文无法切换英文