数字信号处理C语言程序集(DSP算法大全C语言版本446页)
除掉封面,共446页,只有5.39M,但内容是最全面的,质量上也是非常清晰的。是学dsp算法的绝佳书籍,没有华丽的数学推导,简单明了,名曰数字信号处理C语言程序集,民间又称DSP算法大全C语言版本。第六章FIR数字滤波器的设计F■尋■■b■晷↓國■看↓■↓b日↓bb↓●■■22786.1窗函数方法…22?§6.2域最小误差平方设计.……238§6.3切比雪夫逼近方法…………42第三篇随机数字信号处理第一章经典谱佔计……6§11功率谱估计的周期图方法…····““甲早争·道者自自.264§1.2功率谱估计的相关方法T■冒■■■■■『曾■■詈『國昏日■■哥■订d·聊聊b■山如↓h“◆白ψp4q第二章现代谱估计………………………26821求解一般托布利兹方程组的莱文森算法■■■昏■■1冒■■看嚼司聊國司冒D■180§22求解对称正定方程组的乔里斯基算法q■ψ鲁鲁曾◆◆曾自自4鲁唱音昏鲁自■Z83§23求解尤利沃克广程的菜文森德宾算法…°P甲自287§2.4计算ARMA模型的功率谱密度§2.5尤利沃克谱佔计算法………………………………………292A2.6协力差谱估计算法…1亡■曾■■目■鲁會曾罪司罪鲁·命讠咖D■■■■b啁§2.7 Burg谱佔计算法……1■●33§2.8最大似然谱估计算法第三章时频分析·聊·即·D●b·■唱鲁·◆■申曾阜曾q俨俨■■中個◆314§3.1维格纳( Wigner)分布·“314§32离散小波变换r""t31第四章随机信号的数字滤波也“命甲甲即甲330§41维纳( Wiener)数字滤波330§4,2卡尔曼( Kalman)数宇滤波.吾小如山山甲·自甲§43最小均方(LMS)自适应数字滤波"…"…"∵"卜"r""r"s""341§4-4归一化LMS自适应数字滤波…………344§4.5递推最小二乘(RLS)自适应数字濃泼导↓↓晶3L8第四篇数字图像处理第一章图像雄本运算■■↓罪隱b■【b啁山b西血a导即·晶s咱■聊暴,M352§1.1图像读取、存储与显示…第一篇常用数字信号的产生第一章数字信号的产生§1.1均匀分布的随机数功能产生(a,b)区间上均匀分布的随机数。方法简介均匀分布的概率密度函数为f(r)共它2,方差为Qb通常用U(a,b)表示。均匀分布的均值为+b产生均匀分布随机数的方法下首先,由给定的初值x,用混合同余法a=(ai-1+c)(mod M)产生(,1)区间上的随机数y其中:a-2045,c=1,M=22;然后,通过变换x,=a(ba)y;产生{a,b)区间上的随机数z;三、使用说明1.子函数语句double urniform (a, b, seed>2.形参说明a——双精度实型变量。给定区间的下限。b—双糖度实型变量。给定区间的上限。seed-—长整型指针变量。*seed为随机数的种子。四、子函数程序(文件名: uniform.c)Double uniform (a, b, seed)double a, bilong int的sced;QubIc¥seed=2045兴(#seed)+1ccd=.Scd一(;gced/lC48576)两L18576t=(兴seed)/1048576.0;t=+a)苦trefute〔五、例题产生50个0到1之问均匀分布的随机数主函数程序(文件名: uniform.r):# inelude" stdio.h′include furiomaini)doble a,b,x; int i+Jg intdouble unifo r(double, double, long int xa=0.0;h=1.0;=13?9for(i=0
- 2020-07-02下载
- 积分:1
μC/OS-II操作系统在STM32上的移植
详细介绍μC/OS-II操作系统在STM32上的移植过程,引导初学者完成基本的操作系统架构的创建。建立工程使用(我使用版)在目录下建立工程,工程名为。选一个系列的芯片,哪一个都无所谓(我选的是因为我的板子就是用这个芯片),接下来要注意的是当弹出是否拷贝启动代码到工程文件夹时要选,因为标准外设厍里已经有启动代码了。将里的顶层日录名改为,并将第一个名改为把日录下所有和文件加载到工程里的在下建立一个目录用来放置系统初始化代码。把拷贝到文件夹拷贝到文件夹中。是中断服务程序文件。是标准外设库的配置文件,对于工程中不需要的外设,可以注释掉里面的包含的头文件。这里我建议先仅留下,用到什么再打开什么,这样编译起来快一点,当然也可都留着。使用标准外设库事实上标准外设库的使用在中的节中已有说明,下面我把其中的步骤罗列一下根据所选芯片,把中的启动代码加到工程中,这一步在上面凵经做过了。在的行,根据所选芯片类型,去掉相应注释,这里我去掉行的注释(大谷量型片)去掉行的注释,启用标准外设库。在的行,根据所选芯片主频,去掉相应注释,默认注释已去掉,如果你的芯片主频是,就不用做修改了,这里我的芯片是注释去掉注释跑马灯程序现在可以使用标准外设库了,下面以一个简单的跑马灯程序说明。在日录下建立作为系统入口在下建立一个日录用来放置板级支持代码,建立代码如下:在中建立组,并将各种代码加入。在工程的选项卡的中添加选项卡中选选项卡中选选项卡选打钩,这一步大家可以根据自己手上的仿真器做不同选择。编译运行。在上的移植详解虽然目前网上凵经有不少关于在上的移植版本,包括也有官方移植版本。但这些版本具体是怎么移植出来的,又该怎么基于移植好的开发应用软件,网上介绍的并不多。这里介绍一下我的移植经历,希望对大家有所帮助。我的移植基本上是从零开始的。首先想要做好移植,有两方面的內容是必须要了解。日标芯片内核原理虽然我们移植的目标芯片是,但操作系统的移植基木是针对内核(以下简称)而言的,所以我们只需了解内核就好了。片就是内核加上各种各样的外设。怎么才能了解呢?看一本书权威指南(宋岩译,网上多的很)就好了,很多同学可能想,看完这本书移植的新鲜劲都没了,因此我把该书和移植有关的章节都刎了出来,并对其中的重点内容进行介绍,我数了数相关章节还不到页,就这点内容,总要看了吧。相关章节如下概览主要了解的概貌。刚开始看时不用追求仝部理解,后面会有详细介绍,很多内容多看几遍就明白。其中指令集,只要了解,只使用就了基础寄存器组通用寄存器堆栈寄存器有两个,和同时只能看见一个引用时,引用的是正在使用的那个可用于异常服务和应用程序只能用于应用程序系统复位后,用的堆栈指针是连接寄存器,又名,存储返冋地址程序计数寄存器,又名特殊功能寄存器程序状态字寄存器组(中断屏蔽寄存器组(控制寄存器(程序状态字寄存器组()分为应用程序中断号执行每个都是位,由于这个寄存器有效位是错开的,因此可以组合访问。中断屏蔽寄存器组(),这三个寄存器用于控制异常的使能和除能。控制寄存器()它有两个作用:定义特权级别选择当前使用哪个堆栈指针操作模式和特权极别操作模式处理者模式和线程模式异常处理:处理者模式主程序:线程模式不区分特权级和用户级,程序始终工作在特权级这两个堆栈指针的切换是全自动的,就在出入异常服务例程时由硬件处理。没什么好讲的,需要看。复位序列初值初值复位向量异常异常类型分为系统异常编号和外部中断大于优先级支持个固定的高优先级和多达级的可编程优先级。在中,每个中断都有一个优先级配置寄存器(个,用来配置该中断的优先级。但该寄冇器并不是每个位都被使用,不同制造商生产的芯片不相同,譬如使用位,也就是说支持个可编程优先级(参考注意该寄存器是以对齐的,因此每个中断的优先级配置寄存器位有效,位无效。对于优先级,又分为抢占优先级和亚优先级,中的应用程序中断及复位掉制寄存器的优先级分组描述了如何划分抢占优先级和亚优先级什么意思?以为例,优先级配置寄存器不是位有效吗,如果中的优先级分组值为,则优先级配置寄冇器的位确定抢占优先级,位确定亚优先级。此时所有中断有个抢占优先级,每个抢占优先级有个亚优先级。抢占优先级高的中断可以抢占抢占优先级低的中断,即抢占优先级决定了中断是否可以嵌套相同抢占优先级的中断不能嵌套,但当抢占优宄级相同的异常有不止一个到来时,就优先响应亚优先级最高的异常。参考附求表表中断优先级寄存器阵列共系统异常优先级寄冇器共个优先级相同,看中断号,中断号小的优先。向量表初始在处,可以通过向量表偏移量寄存器(地址:)更改,般无需更收。中断输入及挂起行为需要看。异常可不看和主要用在分特权级和用户级的操作系统,不区分特权级和用户级可以不管这个东西。这里说点题外话,一开始我很奇怪为什么会提供这种中断,因为这种中断一般都是用在大型的操作系统上,如系统上,可又不提供,应该是无法移植系统。后来我才知道是针对没有的嵌入式系统而设计的不过还是很怀疑有人会在像这种芯片上用中断主要做上下文切换,也就是任务切换,是移植过程中最重要的中断。主要有两点中断是手工往的悬起寄存器中写产生的(由写)中断优先级必须设为最低在讲移植代码时会介绍具体是如何做的。对于的部分应认真研读一下。与中断控制负责芯片的中断管理,它和内核紧密相关。如果对于中断配置不是很了解,可以看看节讲述了定时器,需要看。中断的具体行为中断/异常的响应序列当开始响应一个中断时以及入栈取向量选择堆栈指针,更新堆栈指针,更新连接寄存器,更新程序计数器对移植米说,需要注意异常返同在中,进入中断时,寄存器的值会被自动更新。节对史新后的值进行说明。这里统称。返回时通过把往里写来识别返回动作的。因为是一个特殊值,所以对于,汇编语言就不需要类似这种指令,而用语言开发时,不需要特殊编译器命令指示个函数为中断服务程序。实际上,中断服务程序如果是代码编写,汇编成汇编代码,函数结尾一般是嵌套的中断只要注意:中断嵌套不能过深即可。和这两节说明对中断的响应能力大大提高了,主要是硬件机制的改进。但对移植来说,并不需要关注异常返回值对不同状态进入中断时,寄存器的值进行说明,需要看。这里有一点需要注意,该点在讲移植代码时再介绍利对移植来说,并不需要关注。的低层编程这·章仅需关注节,因为对移植来说汇编与的接口是必须面对的。汇编与的接口有两点需要知道当主调函数需要传递参数(实参)时,它们使用。其中传递第一个,传递第个在返冋时,把返冋值写到中在函数中,用汇编写代码时,可以随便使用,而使用则必须先以上内容和移植多少都有些关系,刚开始看,可能不太明白,多看几遍就好了。
- 2020-12-07下载
- 积分:1