-
楼主威武!
-
多谢版主的支持!
-
o_o
-
ARM起步,首选ARM-Cortex-M0。这款ARM单片机和51功能类似,价格差不多,性能却高了很多!
雍正和乾隆做皇位的时间长吧,最后还是要下台的。但下台并不是说它不好了,而是他的时间已经到了。
51现在在大多数中小企业还是用的很多的,一时半会是下不了台的。再说了,我国的教育业内还有早已淘汰的单片机。即使51下台了。在教育业也会活个几十年。还是有市场的。
[ 本帖最后由 richgood 于 2011-7-11 17:14 编辑 ]
-
[ 本帖最后由 richgood 于 2011-6-26 14:43 编辑 ]
-
呵呵!谢谢!
-
这个研讨会很给力,顶!
-
问题已解决!需要加gbk2uni字库!
我测试的方法是不管遇到什么gbk都用同一个“我”的unicode码:0x6211代替。
例如创建一个“电子.txt”文件,在SD卡上就会建立一个“我我.txt”的文件。
创建一个“电子工程世界.txt”文件,在SD卡上就会建立一个“我我我我我我.txt”的文件。
说明需要加gbk2uni转换表!
-
顶JLINK
-
非常感谢leang521和zhaojun_xf两位版主的帮助!
在下的问题已经解决了!
果然是STACK_SIZE搞的鬼!
在KEIL的启动代码中,默认的STACK_SIZE为512字节,而SD卡的扇区最小就是512,只一个Buffer就都占了,在加上其它一些数据,不重合才怪!改为2048以后,问题就解决了!
就这么个小动作,搞了一个星期!搞的我都快放弃FATFS呀!结果不是FATFS的问题!
再次感谢!高人呀!
[ 本帖最后由 richgood 于 2011-5-8 10:49 编辑 ]
-
请问怎么改堆栈?
谢谢!
-
以前我的buffer是定义在FAT的API文件下:FATAPI.C
现在我把buffer定义在main.c当中,结果写入的字节当中前面有一半都成了乱码。
我在给“ration.txt”写入数据之前,先用串口把buffer的数据输出到电脑,看到buffer的数据没有乱,说明就是进入文件系统后,数据乱了。
请问接下来怎么调试比较好?用的编译器是KEIL MDK4.0
-
我用flseek函数定位在ration.txt文件的第三个512字节开始写512个数字9,结果你看前面1024出现了什么现象,如下图:
我是用ISP串口方式自动下载的程序!根本没有用JLINK!
[ 本帖最后由 richgood 于 2011-5-6 18:05 编辑 ]
-
多写了几个扇区!第二个512的字节开始还是乱码!
-
函数里面是有f_lseek的,如下:
FRESULT FATFileWrite(const TCHAR *fileName, uint8 *buf, uint8 rcvCount)
{
FATFS fs; // 定义文件系统
FIL file; // 定义文件
UINT bw; // 字节计数器
FRESULT res; // 函数执行状态值
f_mount(0, &fs); // 加载文件系统
res = f_open(&file, fileName, FA_OPEN_ALWAYS|FA_WRITE); // 打开文件
if(res != FR_OK)
{
return res;
}
else
{
res = f_lseek(&file, DATA_SIZE*(rcvCount-1)); // 获取偏移量
if (res == FR_OK)
{
res = f_write(&file, buf, 512, &bw); // 写文件
if (res != FR_OK)
{
return res;
}
}
else
{
return res;
}
}
f_close(&file); //关闭文件
f_mount(0, 0); // 卸载文件系统
return FR_OK;
}
-
-
用WINHEX软件看了下,确实是写入了整整512个字节!
不过前11个字节是乱码!
如下图:
-
我把FatFs 移植到LPC1114上以后,给一个文件写内容:比如给SD卡里面的“ration.txt”文件写512个字母d,结果是在“ration.txt”里面出现了如下现象!
(注意:文件头从下面字母g前面的一个空格开始)
g T dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
可以看出,字母d的数目不足512个,而且开头还有g,空格,T和一些符号!
请问这是怎么回事?
声明:1.经测试,读写一个扇区函数和多个扇区函数都能使用!
2.用diskio.c文件里面的函数查看SECTOR_SIZE = 512
BLOCK_SIZE = 64
SECTOR_COUNT = 3862528
用的是正品2G SanDisk卡!
谢谢!
-
你看的中文手册翻译错误,引导你思维错误!
手册上:
An RTOS tick timer which fires at a programmable rate(for example 100Hz) and invokes a SysTick routine.
这句话想表达的意思是系统定时器的速率是可编程的,当我们使用RTOS时,典型值是100Hz,也就是10ms!
你看的手册的作者首先把100Hz看成了100MHz,然后他把这句理解成了当时钟为100MHz时,会产生标准的RTOS时钟10ms中断!
我猜的应该八九不离十!
-
你买的这个屏是RGB接口的,必须用带有LCD控制器的单片机才能驱动起来。