2016-06-26 22:56:38 nar666 阅读数 1052
学习51单片机最小开发系统需要准备一下工具
1.单片机(这不废话么)2.烧录软件(一般由单片机厂商提供)3.keilc(来源你懂的)4.驱动程序安装(单片机厂商提供)

下面是重点
1.建立新工程
2.在Atmel中选择AT89C52
3.建立新文件并且保存,注意保存时自己加.c后缀
4.右键Source Group1,把刚刚建立的C语言文件添加进去。
5.右键Target 1 点击选项,在output中勾选建立hex文件。
6.可以开始愉快的打代码了
7.此处例程为点亮第一个led灯,依据电路修改变量名字,代码如下
#include "reg52.h"

sbit led=P2^0;

void main()
{
	while(1)
	{
		led=0;
	}		
}
点击rebuild生成hex文件,hex就是要下载到单片机中的文件。

8.安装驱动

9.使用下载工具下载到单片机中,注意选择端口以及一些单片机要用跳线连接接口。

10.大功告成,接下来还有很多的模块要学习。
2016-07-04 15:46:11 ki_dh 阅读数 305

因为工作开发需要,需要在MCU中添加一个文件系统,记录单片机数据,板子会提供个sd下载线,pc直接读取sd卡数据。保存为CSV文件,到时候电脑打开就是excel格式。

从网上找了个叫小当的XS128上移植FATFS文件系统,稍微修改下。

FATFS是开源的文件系统,说明做的还可以,官网可以下载源码:http://elm-chan.org/fsw/ff/00index_e.html。

下载下来主要是src和doc两个文件,src是源码,doc是文档说明,英语看起来应该不是太难。

首先是配置ffcong.h文件,按照自己需要读写配置

移植过程中,将小当的文件系统都转过去了,重新配置了个SPI通信部分,将原来的M口换成S口就行了。

之前用了个4G的SD卡,程序移植卡在f_open中,估计SD协议没对上,换了个2G的就好了。

现在可以进行文件读写了。

对文件进行追加写,用的是f_lseek,找到文件末尾进行追加

删除文件是f_unlink

CSV文件读写也挺简单的,用逗号分隔符隔开每一列就行了,试了下要用英文的“,”才行,中文的不行

每次操作完之后要进行f_close操作。做出来大概效果如下。


2019-05-31 19:09:27 Zhu_Zhu_2009 阅读数 391

参考

Small RTOS51堆栈管理分析
嵌入式实时操作系统small RTOS51原理及应用 ----笔记 第一章 SmallRTOS51 简介
small rtos学习笔记(1)

实现

为STC8A单片机添加一个微型RTOS,方便业务开发,尤其是多个定时任务,经过网上资料搜索,最终发现了Small RTOS这个开源的RTOS,支持51单片机这个RAM不是的大的MCU,

2013-08-01 15:57:23 yongyooh 阅读数 1601
由于官方移植的FATFS是短文件名英文,因此调试时在U盘里创建了一个名为demo.txt的文件

   在USBH_USR_MSC_Application函数下添加了一段代码。


/**
* @brief  USBH_USR_MSC_Application
*         Demo application for mass storage
* @param  None
* @retval Staus
*/
int USBH_USR_MSC_Application(void)

uint8_t readTextBuff[]  = "                                                 ";
uint16_t bytesRead ;

f_open(&file,"0:demo.txt",FA_OPEN_EXISTING | FA_READ);
f_read(&file,readTextBuff,sizeof(readTextBuff ),(void *)&bytesRead );
if(bytesRead >0)
{
    LCD_UsrLog("%s ",readTextBuff);
    LCD_UsrLog("%d ",bytesRead);
}
else
{
    LCD_ErrLog("> demo.text can not be open ....");
}
f_close(&file);


 实验结果是打印出

        >host demo application using FAT_FS

        >34 

        这是事先存在demo.txt文件里的一段文字,共34个字符(包括空格)。


2016-09-05 09:41:15 qq_35215220 阅读数 1383

记录一下目前开发遇到的问题,以方便以后的总结。

这是一个在手机背面添加单片机,用来打卡读卡功能,由单片机厂家提供so文件进行单片机的控制与磁卡读取。

一开始进行添加,毕竟是从eclipse当中移植到android studio当中的项目,so文件的路径有一定的差别。

按照网上所言进行配置之后,就开始了无论什么调整启动金手指初始化的代码都会报错

java.lang.UnsatisfiedLinkError: Native method not found:

之旅。

无论是cpu的适配还是路径的指向,甚至ndk的下载配置,依然是上面的报错,不增不减,很是任性。

因为是第一次接触给项目中添加so文件,所以很长时间都以为是自己的文件导入方式有问题。

但是后来发现因为安装在手机背后的金手指是临时安装,并没有把后盖完全关紧,可以看到金手指的电源指示灯光,就尝试跳过这段报错的初始化金手指代码。

用厂家提供的demo开启电源,然后注释掉程序里面单片机的初始化电源与信号源操作代码,运行。

果然不报错,且可以读卡。

也就是说,只有厂家提供单片机电源调试so文件会出现报错,而另一个负责接口读卡的so文件则没有任何问题,那么这么看来 这就不是我导入的问题了。

查阅网上大量资料以后,一篇小文章引起了我的注意,里面也跟我一样的问题,但是对方提到过,不光是android studio当中报错移植到另外的eclipse项目中一样报错,这就给了我一个提示。

赶紧把代码从商家提供的demo中移植到新建的eclipse项目中,运行调试,一样的报错。

那么这就只能是包名路径名的问题了。

果不其然,将调用so文件的公共类放置在与厂家提供的demo一致的路径包名之下,就可以正常运行,估计是C++代码里需要通过反射调用java层代码吧。

总的来说这个真的是非常的任性。

之后就是一路的开辟子线程,添加控制读卡时间的倒计时条进行调试。

然后又发生了莫名其妙的问题,手机安装好debug的app后运行第一次打卡,金手指卡死,无法读取磁卡。强退app,重新运行,打卡,正常读卡。退出,运行,读卡,卡死……

于是就变成了一次不能读卡,一次能读卡,一次不能读卡的怪异问题。

一开始以为是逻辑的错误,有可能是应该先打卡的接口被放到后面执行。

但是立马让我给否定了,因为厂家提供的demo运行完美。

因为是金手指卡死并不是手机自身的问题,日志里并不报错,加上真机测试日志输出干扰太多,所以无法用Log打印进行测试,便采用了debug断点形式进行测试,一条一条代码的运行找错。

结果运行的那叫一个完美。

那就只能是运行中有的代码必须延迟执行了……

每行代码都进行延迟执行这是不现实的,就采用Toast方式查看具体哪行需要延时(有意思的是,加入几条Toast之后竟然运行完美了开始,就一条一条的注释查看)。

经过调试,发现打开接口的那两行代码之后的代码需要延时执行,设立延时200毫秒,解决问题。



总结:

结合硬件的单片机进行打卡的功能这么一个小功能,居然耗费了我整整一个周的时间(绝大部分还是消耗在了包名路径名的报错闪退上),这真是……



===========================2016.9.6 补充=======================

除了打开接口,关闭接口依然需要一定的延时,暂定500毫秒。

目前还有一部分的打卡数据出错现象,主要是操作的过于频繁以及操作超时引起的,目前还未在逻辑上发现具体问题所在,但是至少目前操作怎样都不会闪退卡死,所以可以暂时放一下。


没有更多推荐了,返回首页