-
连线没有问题,用相同的USB仿真器从另外一台机器烧写程序时,可以成功烧写,但是换另外一台机器时,则烧写失败,我想应该是IAR设置问题,请问下,什么地方需要特别设置下吗?
-
STC就一个232 ,很简单,楼主去看看DATASHEET。
另外STC 有个问题,我们曾经用STC做过项目, 当时下载时遇到个问题,就是它对USB转232的数据线要求稍微高点 ,我们便宜的转换线都下载不进去,稍微好点的线下载都没问题。
-
GPIO就是通用输入输出口啊?
我是来混分的
-
正常启动时EBOOT将NAND中的OS数据读取到dwLoadAddress再launch。
在我的EBOOT中,整个烧录过程是
1、USB下载数据到DMA区。(BIN文件)
2、DMA区的数据解压缩到cashe区。
3、将cashe区的数据写到NAND区。
4、从NAND读数据到dwLoadAddress。
5、launch。
与你的不同是,我的不是直接将cashe数据读到dwLoadAddress。
但是其根本目的应该是OEMlaunch函数的通用性,任何情况下4、5步骤都是要做的。
你再细分析分析你的代码,看看是不是也是这样的目的。
-
引用 1 楼 domworldjohn 的回复:
fatfs文件系统一般是用于NANDFLASH的,binfs一般是用于multibin的,它们并不冲突,系统可以同时拥有fatfs和binfs文件系统
multibin是指什么啊?另外我要是想实现hive注册表的话,就需要该fatfs相关的内容了吧?
-
楼主可以参考下面这篇文章,另外CNKI上也许有类似的硕博论文。
单片机脉搏测量仪
本文介绍一种用单片机制作的脉搏测量仪,只要把手指放在传感器内,很快就可以精确测出每分钟脉搏数,测量的结果用三位数字显示出来。
一、电路工作原理
电路原理见附图。电路由传感器电路、信号放大和整形电路、单片机电路、数码显示电路等四部分组成。
传感器由红外线发射二极管和接收二极管组成,测量原理如下:将手指放在红外线发射二极管和接收二极管之间,血管中血液的流量随着心脏的跳动变化,由于手指放在光的传递路径中,血管中血液饱和度的变化将引起光的传递强度变化,此变化和心跳的节拍相对应,因此红外接收二极管的电流也跟着心跳的节拍改变,使得红外接收二极管输出与心跳节拍相对应的脉冲信号。该脉冲信号经F1~F3、R3~R5。C1、C2等组成的低通放大器放大,F4、R6、R7、C3组成的放大器进一步放大后,送给由F5、F6、RP1、R8等组成的施密特触发器整形后输出,作为单片机的外部中断信号。电路中的可变电阻RP1用来调整施密特触发器的阈值压。
IC2、X1、R10、C5等组成单片机电路。单片机对由P3.2输入的脉冲信号进行计算处理后,送到数码管显示。发光二极管VD3作脉搏测量状态显示,脉搏每跳动一次,VD3点亮一次。
三只数码管VT1~VT3、R12-R21等组成数码显示电路。本机采用动态扫描显示方式,使用共阳数码管,P3.3~P3.5口作三只数码管的动态扫描位驱动码输出,通过三极管VT1-VT3驱动数码管。P1.0-P1.6口作数码管段码输出。
二、软件设计
程序用C语言编写,由主程序、外部中断服务程序、定时器TO中断服务程序、延时子程序等模块组成。主程序主要完成程序的初始化。外部中断0服务程序由测量、计算、读数等部分组成。定时中断服务程序由计时、动态扫描显示、无测试信号判断等部分组成。程序中用变量n对时间计数,用变量m对脉搏脉冲信号个数计数。
从P3.2口输入的与脉搏相对应的脉冲信号作为外部中断0的请求中断信号,外部中断采用边沿触发的方式。由于脉冲信号的频率很低,所以不适宜用计数的方法进行测量,故而采用测脉冲周期的方法进行测量,即用脉冲来控制计时信号,通过计时数计算出脉冲周期,再由脉冲周期计算出频率,从P3.2口每输入一次脉冲信号就能显示一次脉搏数。
定时器TO的中断时间为5ms,每中断一次计时变量n加1,因此计时的基本单位为5ms,例如一个脉搏脉冲周期对应的n值为240,则对应的时间为1.2s,由此可得每分钟脉搏数为50。如果n的值达到2000,即10秒钟仍没有发生外部中断,则表示没有脉搏脉冲信号输入,于是n被清零,测量结果显示也为0。
读数采用三位数码显示。定时器TO每中断一次显示一个位,因此3次中断就可以刷新一次数据,即15ms刷新一次数据。
三、安装与调试
传感器的制作是一个关键。可将红外线发射二极管和接收二极管分别固定在一个塑料夹子的两侧,用时只需将夹子夹在手指上即可。制作时注意保证红外线接收二极管在使用时不要受到外界光线的干扰。
调试的主要工作是通过对RP1的调节来调整电路的灵敏度,RP1的阻值越小灵敏度越高,反之灵敏度越低。调试时可通过VD3的发光状态进行观察,如果脉搏跳动时VD3不跟随发光,则说明灵敏度偏低,不易检测到脉搏信号;如果在没有脉搏跳动时VD3偶尔也点亮发光,说明灵敏度偏高,容易受到干扰。
另外可以看看这篇:
基于中颖SH79F164单片机的电子血压计应用
http://article.ednchina.com/Medical/SH79F164_SCM_blood_pressure_sensor.htm
-
呵呵,新年快乐,明天我也可以回家了
-
重新build and sysgen一下可以了,以前我都是build and sysgen current BSP,再次谢谢各位热心的朋友!~~~
-
串口通信不是只是半双工的吗
-
就是点击鼠标和触摸屏系统不响应
-
SDRAM初始化应该是没有问题的,因为别的程序都没有问题。
这个堆栈有关系吗?
地址都是4的倍数,可以访问的。
SDRAM是64MB的,空间怎么会不足?
-
貌似第一次 要 build and sysgen 的
-
我也学习一下,继续关注。
-
大哥分析下啊
程序功能是 跑马灯
有两个程序
AREA |DATA|,CODE,READONLY
ENTRY
ldr r13,=0x1000
IMPORT LedMain
b LedMain
END
/*********************LED实验*********************************/
// 公司名称 :保定飞凌嵌入式技术有限公司
// 描 述 :跑马灯
#define GPFCON (*(volatile unsigned *)0x56000050)
#define GPFDAT (*(volatile unsigned *)0x56000054)
#define GPFUP (*(volatile unsigned *)0x56000058)
int LedMain()
{
void Delay(unsigned int);
unsigned char ledtab[]={0xf7,0xef,0xdf,0xbf};
int i;
GPFUP&=0XFFFFFF87; //使能上拉F3-6
GPFCON&=0XC03f;
GPFCON|=0X1540; //将F3-6设为输出口
while(1)
{
for(i=0;i
-
支持台灣同仁
-
肯定是质量问题,以前手艺差时焊盘都拆坏了,电容都没问题。
-
感觉硬件问题可能比较大,因为有一块是好的,看看有没有虚焊什么的
-
LZ是乎是2443吧?
吧*2去掉
-
引用 9 楼 visualthinking 的回复:
引用楼主 y2dg4lf 的回复:
驱动使用中断EINT0和EINT5,大概20ms就一个中断,来了中断后就在IST中从3根GPIO口线读取300Bytes的数据
测试发现,在Wince有其他操作时,驱动IST中接收的数据会随机出现误码或者0,在IST中增加了计数器,测得中断是每次都有进入,可就是读数出现了错误。现在想把IST的优先级提高,可不知道该设置为多少好。
1.线程优先级最高也就是“时间关键”和GUI更新一样
2.可以调用GetTickCount,看一下,读取数据所用的时间,如果不超过100ms,更改优先级不见得有效
3.“在Wince有其他操作时”,可以说一下,这些操作用涉及GPIO的使用吗,或许占用了也不一定,那就加 critical section
请教一个问题,如何控制GPIO连续读取300bytes的数据,是每隔多长时间读一次。
多谢!
3、“在Wince有其他操作时”,如频繁点击触摸屏,就会出现数据的中断和出错,本人是菜鸟,现在写的驱动只是功能实现,没去考虑到跟其他驱动之间的调度关系。-_-!!
“GPIO连续读取300bytes的数据”这是我没说清楚,就是 ARM发一个时钟,读一个数据实现的
-
thank you ,i know.