嵌入式/DSP
文章平均质量分 96
wangkeyen
这个作者很懒,什么都没留下…
展开
-
CP56time2a是什么格式?
CP56time2a是101/104规约中定义的时间格式,101和104是电力通信规约的一种,2000年左右进行了修订,现在使用的104规约应该就是2000年的版本。根据以前下载的一个文档的说明,104规约应该是默认的20xx年了,所以xx是从00-99年,所以7bit能表示00-99就可以了。毕竟一种规约能用一百年,已经了不起了。附截图:...转载 2019-03-27 22:27:06 · 5066 阅读 · 0 评论 -
DSP28x_usDelay()
程序为了实现精确的定时,使用了一个用汇编编写的延时函数DSP28x_usDelay(),该函数在文件DSP281x_usDelay.asm中,细节请阅读该文件。为了调用该函数,在Main.c中做了如下声明:extern void DSP28x_usDelay(Uint32 time);该函数的定时仍然不够精确,因此在文件DSP281x_Examples.h中做了如下的宏定义修正:#转载 2013-01-21 10:37:41 · 9860 阅读 · 1 评论 -
TMS320F28335在Flash里面运行时不能设置断点的原因
因为芯片的硬件断点有限,按下面几步做一下:1、在CCS-->debug-->breakpoints中点remove all。去除所有的breakpoint2、如上面所说在CCSv3-->option-->Cuctomize-->program/project/CIO中的ProgramLoad 中的1,3,4,5打钩3、重新编译你的工程,重新烧写FLASH。4、此时breakpoin原创 2013-01-18 16:02:33 · 3884 阅读 · 0 评论 -
C语言中void具体有什么作用
1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。 void几乎只有“注释”和限制程序的作用,因转载 2014-09-12 15:27:19 · 74306 阅读 · 6 评论 -
break和continue的区别
break是结束整个循环体,continue是结束单次循环比方说:while(x++ { if(x == 3) { break; } printf("%d\r\n", x);}结果是输出 1 2 就退出了整个while循环但是如果使用continuewhile(x++ { if(x转载 2014-09-12 10:47:31 · 1292 阅读 · 0 评论 -
C语言中全局变量的定义与调用
1. 谭浩强 书中对‘全局变量’的定义 在函数内定义的变量是局部变量,而在函数外定义的变量叫做外部变量,外部变量是全局变量。全局变量可以为本文件中其他函数所共用它的有效范围从定义变量的位置开始到本源文件结束。 建立全局变量的作用是增加了函数间数据联系的渠道。2. 谭浩强 书中对‘全局变量’的声明 用extern声明: 如果外部变量不在文件的开头定转载 2014-09-11 11:28:03 · 108149 阅读 · 5 评论 -
strcpy函数的实现
大家一般认为名不见经传strcpy函数实现不是很难,流行的strcpy函数写法是:[cpp] view plaincopychar *my_strcpy(char *dst,const char *src) { assert(dst != NULL); assert(src != NULL);原创 2014-08-15 10:43:16 · 475 阅读 · 0 评论 -
数组名和数组名取地址的区别
以下代码会打印出什么样的日志呢?[cpp] view plaincopy#include int a[2] = {1,2}; int main(){ printf("a = %p\n", a); // I printf("&a = %p\n", &a); // II原创 2014-08-15 10:38:55 · 596 阅读 · 0 评论 -
source insight软件如何知道当前打开的文件所在的路径
问题: 当用source insight 软件编写程序时,忘了我们写的程序保存的位置时该怎么办?答:在打开的source insight软件窗口中点击菜单栏中的“Project”选项---->Project setting ...------>Project Source Directory下显示的就是项目所在的目录。source insight 的标题栏上的地址显示的是当前文件所在项目文原创 2014-09-10 17:31:31 · 8837 阅读 · 0 评论 -
6中最常用恒流源电路的分析与比较
恒流电路有很多场合不仅需要场合输出阻抗为零的恒流源,也需要输入阻抗为无限大的恒流源,以下是几种单极性恒流电路: 类型1:特征:使用运放,高精度输出电流:Iout=Vref/Rs 类型2:特征:使用并联稳压器,简单且高精度输出电流:Iout=Vref/Rs检测电压:根据Vref不同(1.25V或2.5V) 类转载 2015-10-22 11:54:06 · 4082 阅读 · 1 评论 -
warning: function declared implicitly错误原因
这是由于没有声明函数原型造成的。在a.c中,void main(){.....delay();....}在b.c中void delay(){}如果就只是这样的话,就会出现上面的worning的。解决办法是在b.h中写 extern void delay();然后在a.c中include "b.h转载 2016-03-29 22:56:53 · 6226 阅读 · 0 评论 -
IIR 滤波器的实现(C++)
IIR 滤波器的实现(C++)最近在写的一个程序需要用到IIR滤波器,而且IIR滤波器的系数需要动态调整。因此就花了点时间研究IIR 滤波器的实现。以前用到的IIR滤波器的参数都是事先确定好的,有个网站,只要把滤波器的参数特性输进去,直接就能生成需要的C代码。http://www-users.cs.york.ac.uk/~fisher/mkfilter/trad.htm转载 2016-03-25 10:30:09 · 4483 阅读 · 0 评论 -
CAN db++ V3.0.63(SP6) 用于编辑DBC文件用于解析CAN协议报文
CAN db++用于编辑DBC文件,编辑完成后,借助硬件接收设备与配套软件(CANalyzer、CANpro等软件)即可实现CAN应用层协议解析。云盘下载链接:https://pan.baidu.com/s/1vsUdQpBQHcr2PmSiSIoChQ 密码:jiwrCSDN下载地址:https://download.csdn.net/download/htx1020/10497809(...转载 2019-03-14 17:13:40 · 2775 阅读 · 0 评论 -
STM32之sprintf函数
单片机中Sprint函数:说明1:使用该函数时必须包含stdio.h头文件,否则容易卡死程序说明2:sprintf与printf函数的区别:二者功能相似,但是sprintf函数打印到字符串中(将数值转换成对应字符串形式,就是变换成ASCALL码),而printf函数打印输出到屏幕上。在单片机中将数值转换成字符串是sprintf函数最广的用途。Sprint函数具体形式: int sprintf...转载 2018-08-22 14:33:35 · 6005 阅读 · 0 评论 -
JLINK的SWD接口调试器制作
SWD接口调试器制作 将1和2号脚连接在一起,连接到VCC上。其他引脚按照以上顺序排列即可。转载 2018-07-18 19:46:00 · 1107 阅读 · 0 评论 -
stm32-串口接受不定长数据方法(3种)
方法1:串口接受数据,定时器来判断超时是否接受数据完成。方法2:DMA接受+IDLE中断实现思路:采用STM32F103的串口1,并配置成空闲中断IDLE模式且使能DMA接收,并同时设置接收缓冲区和初始化DMA。那么初始化完成之后,当外部给单片机发送数据的时候,假设这帧数据长度是200个字节,那么在单片机接收到一个字节的时候并不会产生串口中断,而是DMA在后台把数据默默地搬运到你指定的缓冲区里面。...转载 2018-02-23 14:32:51 · 2986 阅读 · 0 评论 -
UCOS_III定时器(第一步)
我在刚刚看到这个定时器的时候第一印象是硬件的定时器,相对于硬件的定时器我还是比较熟悉的,因为我使用过好几种芯片,定时器是必调的。阅读了UCOS_III关于定时器的介绍之后我简单的说说我个人的见解(并不一定是对的,只是本人在学习过程中的一些见解而已)。对于这个UCOS_III定时器我的认识理解是和硬件上定时器差不多的,是硬件定时器的一部分(systick定时器),UCOS的时间系统都是由systic...转载 2018-03-15 19:34:04 · 1639 阅读 · 0 评论 -
在Simulink中使用方形还是圆行Sum(求和)模块呢
在使用Simulink的过程中,发现很多用户不知道如何、或者没有时间来设置Sum模块的端口。比如,当我看到下面的框图时,让我感觉的相当刺眼: 下面提供一些小Tips,让您的Sum模块看起来更加舒服和便于理解。圆形(Round)Sum模块从Simulink模块库中拖拽新的Sum模块时,它默认形状是圆形的,并且在左边和下边分别具有一个输入端口: 当Sum模块形状设置为R转载 2017-11-07 14:20:15 · 30208 阅读 · 3 评论 -
软件设计的七大原则
设计模式遵循的一般原则:1.开-闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开发,对修改关闭.说的是,再设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展.换言之,应当可以在不必修改源代码的情况下改变这个模块的行为,在保持系统一定稳定性的基础上,对系统进行扩展。这是面向对象设计(OOD)的基石,也是最重要的原则。2.里氏代换原则转载 2016-11-10 10:21:39 · 483 阅读 · 0 评论 -
比较好的按键处理方法以及实例
按键是单片机最常用的输入设备了。按下接通,松开分断,本来是 很简单的事情,由于现在我们使用的单片机实在是一个非常高速的装置,由于它的高速,使得本来不被人们重视的机械触点在接通和断开瞬间的多次快速弹跳问题变 得突出起来。常规的方法就是一旦发现按键动作,就人为加上10-20毫秒的延时,等触点稳定下来以后再进行按键处理(例如判断按键码)。同时为了不至于把 一次按键当做多次按键,通常就是等待按键确实释转载 2016-04-16 11:25:05 · 1955 阅读 · 0 评论 -
IIR滤波器的C实现
第一步:点击菜单中的Edit->Convert Structure 选择Direct Form I ,SOS,(必须是Direct Form I, II不行)一般情况下,按照默认设置,fdatool设计都是由二阶部分串联组成的。这种结构的滤波器稳定性比一个section的要好很多,其他方面的性能也好些。如果不是的话,点击Convert to second order sectio转载 2016-03-25 11:26:00 · 4607 阅读 · 2 评论 -
关于C语言static定义函数类型的具体解释
内部函数和外部函数 函数一旦定义后就可被其它函数调用。 但当一个源程序由多个源文件组成时, 在一个源文件中定义的函数能否被其它源文件中的函数调用呢?为此,C语言又把函数分为两类: 一、内部函数 static 如果在一个源文件中定义的函数只能被本文件中的函数调用,而不能被同一源程序其它文件中的函数调用, 这种函数称为内部函 数。定义内部函数的一般形式是:转载 2014-08-15 11:13:37 · 2448 阅读 · 0 评论 -
C语言中各种数据类型长度
C语言的基本数据类型有以下几个:int 整型char 字符型float 单精度浮点型double 双精度浮点型另外,在基本数据类型基础上附加一些限定词, 得到扩充的数据类型。short,long可以应用到整型, unsigned可以应用到整型和字符型:short int(或short) 短整型long int(或long) 长整型unsigned int 无符号整型转载 2014-08-15 11:05:50 · 5694 阅读 · 0 评论 -
关于C 语言分母为0后的后果
C语言分母除0原创 2014-03-03 17:59:10 · 12881 阅读 · 3 评论 -
有关TI C6000的DSP的EMIF接口的两个问题:地址总线不从零开始问题及寻址范围问题
示例芯片:TMS320C6416EMIF,即ExternalMemoryInterFace ,中文译为外部存储器接口。 EMIF可谓是困扰了我很久的一个接口。当然,相比于SPI,UART,I2C等总线协议来说,EMIF相对来说复杂一些…… ========================两个问题============================切不说EMIF怎么去转载 2012-11-28 14:24:25 · 2951 阅读 · 0 评论 -
DSP/BIOS HWI设置为Dispatch的作用 .
DSP/BIOS中的线程和电脑中的线程有很大区别。关于DSP/BIOS的详细介绍请参考TMS320 DSP/BIOS User's Guide。下面简单地介绍一下DSP/BIOS的线程。 为了让DSP能够同时处理多个任务,DSP/BIOS提供了如下几种类型的线程。 HWI(硬件中断),SWI(软件中断),TSK(任务),IDL(空闲线程)。 HWI其转载 2012-11-02 13:38:13 · 862 阅读 · 0 评论 -
基于C6000 DSP BIOS Link的中断设置
为避免编译过程中,一些头文件和库找不到,我们需要将该例子放在OMAPL138 BSL软件包安装路径的 evmomapl138_v1\tests\ICETEK目录下如果要使用自己的BSL库,请将压缩包中BSL目录下的 evmomapl138_gpio.c 替换BSL源程序的evmomapl138_v1\bsl\src 下的该文件,重新编译库。或者直接使用压缩包中的库首先在main函数中使转载 2012-11-01 16:51:39 · 1835 阅读 · 0 评论 -
omapl138平台,BIOS5.41系统warning: creating output section ".vecs" without a SECTIONS specification
前段时间调试程序,调试的平台是omapl138 上,基于BIOS5.41操作系统,原来的程序是裸机的,后来我想测试一下看在操作系统里面怎么用,然后就新建了一个配置文件omapl138test001.tcf ,注意:这个文件一定要保存到source目录下面。然后再把omapl138test001.CMD文件加入项目,再在头文件里面加入#include "omapl138test001cfg.h"后编原创 2012-10-23 15:55:10 · 2127 阅读 · 0 评论 -
run placement fails for object ".far", size 0x100b3c (page 0). Available
问题一:omapl38加入BIOS操作系统后的问题,我在以前没有操作系统的程序上新加入BIOS后出现的错误报警如下:"E:\\MuPro-wangky\\MuPro\\tests\\138_BTIME(test001)\\src\\omap138bioscfg.cmd", line 330: error: run placement fails for object ".far",原创 2012-10-31 14:35:18 · 4157 阅读 · 0 评论 -
omapl138上BIOS的CLK设置问题
通过测试,在omapl138上面的CLK 模块的输入时钟必须是它实际的输入时钟,改的时钟大了将会导致你定时的周期变长,改的小了将会导致设定的周期变短。这一点和BIOS上面说的不一样。原创 2012-10-16 16:26:26 · 835 阅读 · 0 评论 -
omapl138平台上BIOS的系统全局设置问题
今天通过实验证明了BIOS上面的系统全局设置所设定的频率都是无效的。无论你设置多少DSP工作频率还是300MHz.做这个实验室因为之前的CLK_gethtime()函数得到的数值,它的计数周期按道理讲应该是定时器的输入时钟频率的周期,结果是无论定时器的输入频率是多少,它的周期都是以300MHZ为周期。所以就做了这个实验,测试CLKOUT Pin的频率,当选择为SYSCLK2时频率是150M原创 2012-10-16 16:18:26 · 1795 阅读 · 0 评论 -
关于在omapl138上跑BIOS系统的CLK配置部分学习。
我们在学习C6000系列的DSP时一般都会用到BIOS操作系统。今天通过实验测试终于知道BIOS的CLK部分是怎么用了,首先设定系统的时钟频率,然后在CLK部分右击CLK_Manager选择InsertCLK,给新加的时钟函数起个名字如:CLK001,然后右击CLK001,选择properties,在弹出的对话框中填写要调用的函数,并且要在前面加一个下滑线。然后就是所定义的时间的问题了,右击C原创 2012-10-15 16:41:53 · 1073 阅读 · 0 评论 -
XDS560仿真器在连接OMAPL138的报错及解决办法:error was generated by ti USCIF driver
在CCS3.3环境下用SEED-XDS560PLUS仿真器连接oMAPL138时报的错误如下:Error connecting to the target:Error 0x8000 2240/-180Fatal Error during : Initialization ,OCS,Control,This error was generated by TI USCIF driver.原创 2012-10-15 12:46:48 · 11317 阅读 · 0 评论 -
CCS3.3编译链接库文件与头文件
编译的include文件目录Compiler -》 Preprocessor-》include search path //include文件搜索路径$(Proj_dir); //注释:工程所在文件同级目录下 ../../include;原创 2012-11-22 12:21:20 · 6013 阅读 · 0 评论 -
有符号数和无符号数的转换问题
最近做了一个项目,需要高八位和低八位的数据颠倒一下,需要转换的数据是有符号的16位数据,我编写的函数如下://16bit数据高低位互换程序int16 rearrange16(int16 Data){ int16 temp; temp = (Data&0x00ff) temp |= (Data>>8); return temp;}后来发现一原创 2012-12-27 11:55:15 · 3397 阅读 · 0 评论 -
C语言基础之《数据类型》
C语言基础之《数据类型》 C语言有四种基本数据类型:整形,浮点型,指针,聚合类型(数组和结构体)其它各种类型都是由这四种基本类型的各种组合构成。 其中整形和指针容易混淆,现简要说说它们的相同点和不同点: 相同点:从表面上看都是整数,都可以整数的形式输出。(指针通常以十六进制形式书写)。不同点:物理含义不同,整形一般都有量的含义。指针则没有。另转载 2013-01-24 10:26:03 · 800 阅读 · 0 评论 -
数字信号处理讨论群 群 号:232099818
大家好,为了讨论问题方便,我申请了一个群,只要你对电子方面感兴趣,对DSP/BIOS,信号与系统感兴趣都可以加入改群,大家一起讨论,一起进步!原创 2013-09-26 17:06:40 · 1488 阅读 · 0 评论 -
将程序代码烧到F28335的片上FLASH的调试记录
实现将程序代码烧到F2812的片上FLASH中,然后复位后程序从FLASH中的代码执行(运行当中不将FLASH中的代码或部分代码载入到RAM区内),要做这么几个工作: 修改CMD文件 添加指令跳转代码 烧写FLASH (一)修改CMD文件 相对于调试时的SRAM.CMD文件来说,要修改这么几部分:1、 将程序部分(PAG转载 2013-01-18 11:15:41 · 6345 阅读 · 0 评论 -
谈程序在RAM,FLASH 和外部RAM中运行的速度
谈程序在RAM,FLASH 和外部RAM中运行的速度 以TMS320F28335芯片为例在内部RAM中程序能够,达到150MHZ,也即150MIPS. 用下面这段程序测试: for(;;)转载 2013-01-18 16:47:09 · 7948 阅读 · 0 评论 -
C2000系列常见问题
1、将程序烧写入28xx的flash以后为什么设置不了断点(或只能设置一个断点)?28xx最多允许设置两个硬件断点,一些C语言函数(如输出函数)会自动占用硬件断点,可以将该函数放在ram里执行。在CCS的Options->Customize->Program Load Options(不同的ccs版本可能不一样)选上(1).`Do not set CIO breakpoint at loa原创 2013-01-18 16:45:39 · 3824 阅读 · 0 评论