技术经验
sjwangjinbao
这个作者很懒,什么都没留下…
展开
-
CppUnit小结
v/:* {behavior:url(#default#VML);}o/:* {behavior:url(#default#VML);}w/:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);} Normal 0 7.8 pt 0 2原创 2008-11-26 16:52:00 · 628 阅读 · 0 评论 -
44b0实验-Timer输出PWM信号实验
<br />Timer有个功能是输出PWM信号。实验代码如下<br />/****************************************************************************<br />***************************定时器初始化,让PE7、6、5、4输出PWM信号*****************<br />***************************************************************原创 2010-08-08 21:41:00 · 695 阅读 · 0 评论 -
44b0实验-Timer中断实验
<br />定时器中断,顾名思义,定时到了以后,进行中断处理。下面的实验有一点要注意:<br />rINTMSK=~(BIT_GLOBAL|BIT_TIMER0|BIT_TIMER1|BIT_TIMER2|BIT_TIMER3|BIT_TIMER4|BIT_TIMER5);这一行一定要放在<br /> pISR_TIMER1=(int)Timer1Done;<br /> pISR_TIMER2=(int)Timer2Done;<br /> pISR_TIMER3=(int)Timer3Do原创 2010-08-08 21:50:00 · 484 阅读 · 0 评论 -
44b0实验-实时时钟显示实验
这个实验相当简单喽,就是把实时时钟的定时器进行设置,当然设置好当前时间,然后然它显示下实时时钟的时间。void Display_Rtc(void){ int year; int month,day,weekday,hour,min,sec; rRTCCON = 0x01; // R/W enable, 1/32768, Normal(merge), No reset while(1) //避免读入期间时间跳变引起时间错误 { if(rBCDYEAR原创 2010-08-08 21:54:00 · 273 阅读 · 0 评论 -
44b0实验-实时时钟闹钟实验
<br />这个实验也行当简单了:首先设置实时时钟的当前时间,这时候时钟会继续走;然后设置要报警的时间(公元时间)。等报警时间到了,响应alarm中断。<br /> <br />代码如下:<br />volatile int isRtcInt;<br />void __irq Rtc_Int(void)<br />{<br /> rI_ISPC=BIT_RTC; <br /> <br /> Beep(0x01);<br /> Uart_Printf("RTC Alarm Inte原创 2010-08-08 21:58:00 · 365 阅读 · 0 评论 -
44b0实验-实时时钟Tick实验
<br />这个实验目的是每秒钟让实时时钟产生一个中断,在中断响应里面,进行显示当前的中断的次数。结果是:每秒钟,控制终端显示一下当前的计数值。<br /> <br />代码如下:<br /> <br /><br />void __irq Rtc_Tick(void);<br />char *date[8] = {"","SUN","MON","TUE","WED","THU","FRI","SAT"};<br />volatile unsigned int sec_tick;<br /> <br />//原创 2010-08-08 22:01:00 · 374 阅读 · 0 评论 -
44b0实验-DMA实验(续)
昨天说过,将一块内存中的数据通过DMA的方式拷贝到另一块内存中以后,读出另一块内存的值查看,发现结果不是我们预料的值。原因呢,就是cache的问题:通过DMA的方式,第二块内存的值改变了,但是CPU不知道。我们再读取第二块内存的值的时候,CPU认为其内容没变,直接在cache里面读了。所以导致结果不符合。我认为解决办法有两个:1)关掉cache。但是这种办法会影响性能。2)在读取第二块内存的值之前,将cache进行flush。这样cache中的值都变掉了,CPU就只能从内存中重新读取其保存的值了。原创 2010-08-10 12:22:00 · 268 阅读 · 0 评论 -
44b0实验-DMA实验
44b0有4个DMA通道。有两个称作ZDMA,是挂在系统总线上的,另两个是BDMA,是挂在系统总线和外围总线的桥接口上。本实验主要对两个ZDMA进行测试。本实验将分配两块内存,不经过CPU,直接使用DMA的方式进行数据拷贝。下面是代码:#include "DMA.h"#include void Zdma0Int(int srcAddr,int dstAddr,int length,int dw);void Zdma1Int(int srcAddr,int dstAddr,int length,int dw)原创 2010-08-09 21:58:00 · 401 阅读 · 0 评论 -
44b0实验-Cache实验
<br />44b0有8k的Cache。这8k的Cache有三种用法:<br />1)当做8kCache来使用<br />2)4K的Cache,4K的SDRAM<br />3)8K的SDRAM<br /> <br />这个实验就是测试2)和3)两种情况下的SDRAM。代码如下:<br /> <br />#include <string.h><br />#include "Cache.h"<br />void MarchCMinus32(int address,int unit,unsigned int pa原创 2010-08-12 08:13:00 · 490 阅读 · 0 评论 -
44b0实验-IIS实验(播放WAV文件)
<br />这个实验的主要思路是:先把wav文件拷到SDRAM中,然后,将这个SDRAM中的WAV文件进行分析,把PCM裸数据传给IIS接口。这个传送数据有两种方式,一种是使用DMA方式;另一种就是直接一个字节一个字节的传送。IIS接口把音频数据经过4334(DA转换器,其实就是一解码器)将音频传到耳机上,耳机就发声了。<br /> <br />直接把人家的代码贴上吧(前面的注释也留着吧):<br /> <br />//********************************************原创 2010-08-18 21:36:00 · 718 阅读 · 0 评论 -
44b0实验-看门狗实验
<br />中断实验搞定以后,看门狗就完全不在话下了。这个实验呢,分两部分。第一部分就是隔一段时间让看门口产生一个中断,在中断处理程序里对中断进行计数,当达到指定计数值的时候,完成第一部分的实验。第二部分是关掉中断,当看门狗增长到一定值以后,没人喂狗,就会自动重启。<br /> <br />下面是代码:<br />/****************************************<br /> * Watch-dog timer test *<br /> ******************原创 2010-08-08 21:31:00 · 397 阅读 · 0 评论 -
44b0实验-中断实验
<br />之前也提到的过,区区一个简单的中断实验竟然让我大动干戈,费了N久才搞定。现在把具体实验写写吧。<br /> <br />先把代码贴出来吧:<br />#include <string.h><br />#include "INC/44b.h"<br />#include "INC/option.h"<br />#include "INC/Def.h"<br />#include "eint.h"<br />void __irq Eint4567Isr(void);<br />volatile ch原创 2010-08-08 21:21:00 · 263 阅读 · 0 评论 -
44b0实验-通过IIC总线读写EEPROM实验
44b0开发板有个EEPROM可以通过IIC总线来进行读写。不过有一点我需要解释下:EEPROM的slave address是怎么确定的呢?查看EEPROM芯片24C08的手册,发现有个Table 3. Device Select Code如下(注意我们使用的芯片M24C08这一行)查看了一下硬件电路图,我发现管脚E2是接地的。所以,我认为,只要保证Device code是1010,E2是0的地址就是其slave adress。所以这里用0xa0.至于表中的A9和A8,我还不明白怎么回事。(这个问题呢,正是原创 2010-08-07 14:44:00 · 1269 阅读 · 1 评论 -
Python压缩文件遇到的问题
1、问题用Python压缩文件,代码如下:import osimport timesource = [C://Test1,C://Test2]target_dir = C://TestResult//target = target_dir + time.strftime(%Y%m%d%H%M%S) + .7zzip_command = "7z a %s %s" % (targe原创 2008-12-04 14:42:00 · 508 阅读 · 0 评论 -
44b0实验-串口UART实验
<br />既然系统启动部分的代码有现成的,那么我也毫不客气的拿来用吧。前面也说过,这部分我花了些时间把它搞懂了;虽然让我从头到尾写我还真写不来,但是有个需求需要我改些什么东西,我看我真是没问题的。<br /> <br />系统启动部分既然已经完成了从系统上电复位到初始化,然后到跳转到Main, 那么我们UART实验就从Main函数说起吧。Main函数之前,要实现下面几个函数完成串口的功能。<br />1)串口初始化<br />static int UartNum=0;<br />void myUart_I原创 2010-07-24 08:24:00 · 641 阅读 · 0 评论 -
44b0实验-SDRAM读写实验
<br />SDRAM的读写是相当简单了,就是在SDRAM的一段地址里写入写数据,然后读出来看看是不是那些数据。<br /> <br />1)首先,宏定义<br />#define WR_sdram(addr,dat) *((volatile unsigned short *)(addr))=(unsigned short)dat<br />#define RD_sdram(addr) *((volatile unsigned short *)(addr)) <br />#define B原创 2010-07-24 17:26:00 · 476 阅读 · 0 评论 -
44b0学习笔记(3)
又是好久没来写些东西了。不是我懒啊,实在是最近可写的不是很多,呵呵。正是因为看了些关于学习linux + arm的经验,发现arm最好能够当做单片机来学习下。所以嘛,前段时间一直忙着读那本经典的《ARM体系结构与编程》。这两天感觉理论基础学了不少,需要实践了,所以在44b0开发板配套的光盘里面找到了两个程序,一个是LEDtest,另一个是test(强大的无所不能的test程序啊)。这两个程序用Code Warrior编了下,除了稍微一点波折,竟然能在板子上跑了:没有什么能比在板子上看到程序的效果更让人激动的原创 2010-07-24 07:54:00 · 332 阅读 · 0 评论 -
44b0学习笔记(4)
<br />ARM实验正在如火如荼的进行中,仔细分析每个实验,又使我更深入地了解了开发板,比如某些特殊寄存器啊,地址如何分配的之类的--为我进一步的学习,提供了不少动力哦。<br /> <br />对之前进行了下总结,下面开始展望接下来的工作了:<br />1) 建立一个工程,争取把所有的实验都能包含进去。这样就没必要每个实验都建立一个工程,之前的启动、串口输出之类的功能就可以接着往下用了。<br />2) 丰富下串口的功能,比如接受之类的。<br />3) 再接下来要做的实验是外部中断,定时器,实时时钟。原创 2010-07-24 17:41:00 · 177 阅读 · 0 评论 -
vs2005中宏的制作与应用
0 背景<br /><br />我们在写代码时,为了防止头文件重复引用,往往会用以下方法(以文件CMpeg4DecHandler.h为例):<br />文件开始加入<br />#ifndef CXX_CMPEG4DECHANDLER_H<br />#define CXX_CMPEG4DECHANDLER_H<br />文件结束加入<br />#endif //CXX_CMPEG4DECHANDLER_H<br /> <br />为了提高编译速度,我们往往会在引用此头文件的地方加入:<br />#ifnd原创 2010-06-04 17:12:00 · 305 阅读 · 0 评论 -
44b0学习笔记(5)
<br />本来以为中断实验、实时时钟实验以及timer实验能够很顺利的很快的完成,没想到中断实验着实让我费了不少心思。我查了N遍datasheet,中断响应函数就是不执行啊。后来网上查了些资料,有人说是因为bootloader设置了中断地址,bootloader起来后这个地址就偏移了。解决办法呢,有两个,一个是需要加个偏移量,另一个就是不需要起bootloader,直接跑测试程序。<br /> <br />于是乎,我就开始加偏移量,结果,不行。没办法,只能不用bootloader,直接跑我的测试程序了。首原创 2010-08-04 22:14:00 · 241 阅读 · 0 评论 -
44b0实验-Nor Flash编程实验
<br />最近看了下Nor Flash的datasheet,了解了其编程操作;然后又在开发板上跑了跑,排除了些许困难,也都成功了。下面把程序贴一贴吧,有几点要提的是:<br />1)NOR Flash擦除以后,会是全1<br />2)44b0开发板上用到的Flash是SST39VF160,根据数据手册,它有2M大小,功512个sector。每个sector大小为0x1000。<br /> <br /> <br /> <br />//检查指定地址的值是否都是全1<br />int SST39VF160_Ch原创 2010-08-05 22:17:00 · 445 阅读 · 0 评论 -
44b0实验-AD转换实验
<br />AD转换的基本思想呢,就是将规定范围内的电压值转换为某一数值值。比如我这个44b0开发板可以接受的AD转换输入电压范围是0~2.5V,而在某个AIN引脚输入实际的电压为X,我们打算把这个电压值转换成数字值的范围是0~1023,那么经过AD转换,我们得到的值D是 <br /> <br /> D = X/2.5*1023;<br /> <br />当然由这个数字值D,我们也可以反过来计算出此AIN引脚的电压值:<br /> <br /> X = D*2.5/1原创 2010-08-06 08:28:00 · 516 阅读 · 0 评论 -
2440学习笔记(2)
<br />也许是周末与几个研究生同学聚会受到了刺激和激励,也许是最近学习所得使我有一种总结和表达的冲动,今天重新拾起我许久没有更新的博客,写点什么,以便更好的前进。<br /> <br />前段时间我主要做了两件事情:<br />1) 仔细听了国嵌视频的Linux应用程序编程,并且边听边实验。<br />2) 将国嵌视频的Arm体系结构和指令部分,好好听了一下,仔细复习了下这部分使我对ARM指令理解更深刻更牢固了。<br /> <br />接下来想做的是:<br />1)在2440上,用H-Jtag、AD原创 2010-11-15 10:11:00 · 274 阅读 · 0 评论