第 10 页,共 17 页« 最新...89101112...最旧 »

如果你听法国人报电话号码

不知道真的假的。真的好,就好玩了! “要说法语数字还真简单。70说成60+10(Soixante-dix),71是60+11……以此类推 79就是60+10+9。那么,80该怎么说?如果以为是60+20那可就太没有想象力了,我们法国人不光会加法,还会乘法,所以80就是4×20(Quatre-vingts)。 到了说99, 那就要用得上三则运算了:4×20+10+9(Quatre-vingts-dix-neuf)。我不知遇到了多少外国人,特别是美国人,就是在念到了99的时候决定放弃法语学习的。 也许是为了进一步迷惑外国人,法国人念电话号码不像我们习惯一个数一个数地念。比如61718098,法国人不是念成6-1-7-1-8-0-9-8,而是两位两位地念 61-71-80-98。 如果法国人告诉你他的电话号码,你可听好了: 60+1,60+11,4×20,4×20+10+8。 听法国人说电话号码,你刚记了一个4,后面突然冒出来个20, 所以得赶紧把4涂了,改成80,精神始终处于准亢奋状态。”

中断配置方法4:基于csl的ti例程

来源:TMS320C54x Chip Support Library API Reference Guide的第十章中断模块。 程序很清晰,利用csl库,看起来很简单。唉,之前一直在网上查找相关资料,五花八门的,看着晕,也没有解决问题。看来还是官方资料靠谱一点。就是官方资料多了点。需要一本本找。 标注为作者添加。 #define NVECTORS 256  //中断向量表大小,为什么默认为128,这里是256?? #pragma DATA_SECTION (myIvtTable, ”myvec”)  //将表分配到CMD声明的相应位置 int myIvtTable[NVECTORS];  //创建中断向量表 ; … interrupt void myIsr(); ; … main (){ ; … ; Option 1: use Event IDs directly  //方法一:直接用时间ID插入中断向量表。 ; … IRQ_setVecs ((Uint16)myIvtTable); IRQ_plug (IRQ_EVT_TINT0,&myIsr); IRQ_enable(IRQ_EVT_TINT0); IRQ_globalEnable(); ; … ; Option 2: Use the [...]

中断配置方法3:关于C语言中DSP5402中断向量表的配置问题

在MCU/ARM/DSP中,都有1个启动过程,这里主要设计复位及中断的入口问题。 所以它们基本都有启动文件的支持,使程序上电后自动进入正确的程序位置及地址。 复位及中断的入口具有多个间隔固定的程序空间,它们可以是单独的跳转地址 及函数指针,如ARM的中断向量表。也可是一块小的固定程序空间,如51的n*8+3和DSP5402的4字。 DSP5402和51略有不同,它在硬件复位时bootloader将中断向量表映射到ROM的0xFF80处。 但我们实际运行时,中断入口是允许改变的,而且每个程序的中断地址和个数都是不同的。 故需要动态地改变中断向量表。 DSP5402在硬件复位时中断向量表存在SREGs.PMST.IPTR中,步进(大小)0×80. SREGs.PMST.IPTR初始化为0b11111111 1,故中断向量表在0xff80处。 我喜欢将其动态映射到0×0080处,因为寄存器在0×00~0x5f,0×60~0x7f处。 这样连续,RAM程序可从0×100开始装载。 所以我们要做至少2方面的工作: 1.修改SREGs.PMST.IPTR //设置0×0080为中断向量表首址,在第2个128页内。     SREGs.PMST.Regs = (0×01 << PMST_IPTR) | (1 << PMST_MP_MC) | (1 << PMST_OVLY); 2.初始化中断向量表 在C语言的启动文件中,我们只需将中断向量表看成普通数组即可,因为CCS具有地址绝对定位功能。 这样我们就可以很方便地将中断向量表绝对定位到我们需要定位的位置。 在CCS中想绝对定位,必须修改CMD文件。 例如: MEMORY  { /*(R读 W写 X运行 I初始化)*/     PAGE 0: /* Program Space */         MMRS    (RWIX) : o="000000h" l="000060h" /* Memory-mapped [...]

中断配置方法2:

#pragma DATA_SECTION("vectors")//将中断向量绝对定位到0×80处 uVectorEntry g_pfnVectors[] = {     ISR_Reset(),   //reset      0×0080 #0//软硬件复位nISR_REST     ISR_Default(), //nmi        0×0084 #1//非屏蔽中断nISR_NMI     ISR_Default(), //sint17     0×0088 #2//软件中断17        ISR_Default(), //sint18     0x008c #3//软件中断18     ISR_Default(), //sint19     0×0090 #4//软件中断19     ISR_Default(), //sint20     0×0094 #5//软件中断20     ISR_Default(), //sint21     0×0098 #6//软件中断21     ISR_Default(), //sint22     0x009c #7//软件中断22     ISR_Default(), //sint23     0x00a0 #8//软件中断23     ISR_Default(), //sint24     0x00a4 [...]

中断配置方法1:TI C64X DSP中断向量表配置(硬件中断)

下边方法的思路:建立一个新的中断向量表;将现有中断添加入中断向量表中;将新建的中断向量表映射到相应的位置。   1. 编写中断服务例程 在.c源文件中编写ISR函数c_intXX,用于中断处理,如: interrupt void c_intXX (void) {            …; } 注:对于硬件中断而言,XX = 00~15。 2.初始化中断向量表,并在内存段中的中断向量表中配置好对应的中断向量            首先是把中断向量表定位到某一内存段中,我们可以在cmd文件中配置中断向量表的内存映射,如: MEMORY {            VECTORS:         org = 00000000h,       len = 00000400h            L2SRAM:            org = 00000400h,       len = 00100000h            SDRAM:             org = 80000000h,       len = 10000000h } SECTIONS {            .vecs                  :>            VECTORS            .data                  :>            [...]

CCS查看DSP程序运行时间

以下方法还没有验证。 即将验证: 1.进入CCS环境,装载已有工程,并load生成的.out文件,并找到要察看代码执行周期的代码处。如图1所示。 图1 1. 选择ccs的菜单Profiler中的enable clock,如图所示。 Technorati 标签: ccs,dsp 图2 2. 选择Profiler菜单下的 clock setup子菜单,并在Instruction Cycle中输入你的DSP时钟周期,它的单位为纳秒,例如,2407的系统时钟为40MHz,你就该填入25,如果是2812系统时钟为150MHz,就该填入6.67ns,其他配置不动,然后确定。如图3所示。 图3 3. 选择Profiler菜单下的Start New Session子菜单,出现如图4所示的对话框,可以改名字,也可以不改,本例中不修改,直接确定。 图4 4. 通过第四部设定后就出现了如图5所示的一个窗体。 这个窗体中,有四个选项卡,其中Files为以源文件列出统计数据,Functions选项卡用于剖析程序中的函数,Ranges用于剖析一段连续的代码,Setup用于设置开始点和结束点,用于剖析不连续的代码。 窗体的左边按钮的含义为:(这里介绍主要的) 剖析所有的函数。 建立剖析区域。 设置开始点。 设置结束点。 在窗体中剖析数据有一个表格,用红框圈起来的,每个表格的字段名的含义为: Code size:剖析代码的大小,以程序存储器最小可寻址单元为单位,此值在剖析过程中不会发生变化。 Incl. Count:在统计过程中,程序运行进入剖析代码段的次数 Incl. Total: 在统计工程中剖析代码段消耗的所有时钟周期(如果是统计时钟周期的话,CCS还可以统计子程序调用等其他计数,统计其他特性则显示相应的值)。 Incl. Maximum: 执行剖析代码段一遍(包括在剖析代码段中对子程序的调用)消耗的最大时钟周期(由于每次进入剖析代码段的初始条件不同等原因,每次运行剖析代码段消耗的时钟周期可能不同); Incl. Minimum:   执行剖析代码段一遍(包括在剖析代码段中对子程序的调用)消耗的最小时钟周期 Incl. Average: 剖析代码段执行一遍(包括在剖析代码段中对子程序的调用)消耗的平均时钟周期。– 以上这三个就是用户关心的代码执行的时钟周期。 Excl. Count:在统计过程中,程序运行进入剖析代码段的次数,与Incl.Count的值相同。 Excl. Maximum: 剖析代码段执行一遍(不包括在剖析代码段中对子程序的调用)消耗的最大时钟周期。 Excl. Minimum: [...]