05 2013 档案
摘要:定义结构体:struct LNode { ElemType data; struct LNode *next; };typedef struct LNode *LinkList; /* 另一种定义LinkList的方法 */ 链表初始化:Status InitList(LinkLis...
阅读全文
摘要:Cortex‐M3的内核中包含一个SysTick时钟。SysTick为一个24位递减计数器,SysTick设定初值并使能后,每经过1个系统时钟周期,计数值就减1。计数到0时,SysTick计数器自动重装初值并继续计数,同时内部的COUNTFLAG标志会置位,触发中断(如果中断使能)。在STM32的应用中,使用Cortex‐M3内核的SysTick作为定时时钟,设定每一毫秒产生一次中断,在中断处理函数里对N减一,在Delay(N)函数中循环检测N是否为0,不为0则进行循环等待;若为0则关闭SysTick时钟,退出函数。外部晶振为8MHz,9倍频,系统时钟为72MHz,SysTick的最高频率为9
阅读全文
摘要:C语言中所谓的字符串不过是字符数组,后跟一个0x00字符标识结尾,所以反转起来很容易,只要一个循环依次将第一个字符和最后一个字符交换,第二个字符和倒数第二个字符交换……如果最中间有两个字符(即需要反转的字符串长度为偶数),那就交换,如果最中间有一个字符(即需要反转的字符串长度为奇数),那就不需要碰它。还有就是最后一个用来标识字符串结尾的0x00字符不用动它。代码如下:void reversestr(char *str){ int i = 0; char temp; char *s1,*s2; while(*str != '\0') { i++;str++; } str -=..
阅读全文
摘要:冒泡排序法:private static void BulleSort(){ int i, j; for (i = 1; i = i; j--) { if (data[j] 0 && temp k) { j--; } int temp = k; k = array[j]; array[j] = temp; ...
阅读全文
摘要:本文主要介绍LIS3DH的运动检测功能(Motion detection),一旦两次加速度值的差值超过了设置阈值,相应的引脚就会产生中断。LIS3DH接口非常简单,四线SPI接口。LIS3DH上电需要等待大约5ms才能对其寄存器进行操作,否则可能达不到想要的结果。寄存器配置如下:spi_lis3dh_writebyte(0x3f,0x20);//CTRL_REG1 设置采样频率为25Hz,低功耗模式,开启x,y,z轴检测spi_lis3dh_writebyte(0x09,0x21);//CTRL_REG2 正常模式,数据从内部滤波器到输出寄存器,高通滤波器使能到中断1spi_lis3dh_wr
阅读全文
摘要:DMA(Direct Memory Access,直接内存访问)是一种不经过CPU而直接从内存存取数据的数据交换模式。在需要进行大量数据交换的场合,用好DMA,可以大大提高系统的性能,因为DMA操作几乎不占用CPU资源。由于是用DMA的方式,因此在播放的过程中不占用系统资源,我们可以很容易的实现声音的各种操作而丝毫不影响播放的效果,如音量的提高和降低、静音、暂停等。定义变量:static int remainder;static char mute;static char volume;中断函数,当DMA传送完成时打印Success。static void __irq PlayDMA2Done
阅读全文
摘要:s3c2440一共有5个引脚用于IIS:IISDO、IISDI、IISSCLK、IISLRCK和CDCLK。前两个引脚用于数字音频信号的输出和输入,另外三个引脚都与音频信号的频率有关,可见要用好IIS,就要把信号频率设置正确。IISSCLK为串行时钟,每一个时钟信号传送一位音频信号,因此IISSCLK的频率=声道数×采样频率×采样位数,如采样频率fs为44.1kHz,采样的位数为16位,声道数2个(左、右两个声道),则IISSCLK的频率=32fs=1411.2kHz。IISLRCK为帧时钟,用于切换左、右声道,如IISLRCK为高电平表示正在传输的是左声道数据,为低电平表
阅读全文