色偷偷偷久久伊人大杳蕉,色爽交视频免费观看,欧美扒开腿做爽爽爽a片,欧美孕交alscan巨交xxx,日日碰狠狠躁久久躁蜜桃

stst158的個(gè)人空間 http://www.54549.cn/space-uid-5764.html [收藏] [復(fù)制] [RSS]

博客

李現(xiàn)路:在DSP6000中怎樣編寫您的第一個(gè)程序(1)

已有 2055 次閱讀2009-11-28 10:35 |個(gè)人分類:DSP編程|

李現(xiàn)路:在DSP6000中怎樣編寫您的第一個(gè)程序(一)   Post By:2009-11-23 23:44:02
 
李現(xiàn)路:在DSP6000中怎樣編寫您的第一個(gè)程序(1)
 
一、C語(yǔ)言編寫詳解
1.工程目錄最好放在:
CCStudio_v3.3\MyProjects路徑下
2.CSS下和DSP6000編程緊密相關(guān)的目錄結(jié)構(gòu):
  a.CCStudio_v3.3\C6000\csl\include ---DSP6000常用頭文件
  b.CCStudio_v3.3\C6000\csl\lib ---DSP6000常用庫(kù)文件
  c.CCStudio_v3.3\C6000\cgtools\bin --各種編譯工具
3.我們要編寫的程序結(jié)構(gòu):
  a.含有main()函數(shù)的.c的源文件,而且這個(gè)文件的名字最好以main結(jié)尾
  b.添加.cmd文件:內(nèi)存的分配
  c.添加.asm文件:中斷向量表的文件
  d.常用頭文件:
  e.常用庫(kù)文件:
4. 含有main()函數(shù)的.C的主文件的書寫規(guī)范:

.c的源文件完整內(nèi)容如下:

 
#include <stdio.h>
//#include <string.h>
#include <stdlib.h> //stdlib 頭文件里包含了C語(yǔ)言的一些函數(shù),該文件包含了的C語(yǔ)言標(biāo)準(zhǔn)庫(kù)函數(shù)的定義

 
#include <csl.h>  //調(diào)用CSL庫(kù)函數(shù)頭文件,CSL作用是用于配置、控制和管理DSP片上外設(shè),C6000 DSP設(shè)計(jì)了自己的CSL庫(kù)
#include <std.h> //包含了C語(yǔ)言的一些符號(hào)常量
#include <csl_irq.h> //CSL中配置中斷請(qǐng)求的頭文件
#include <csl_chip.h> //CSL庫(kù)函數(shù)中芯片配置頭文件

 
#include "dm642.h"  //dm642常用配置
#include "rtciic.h" //晶振總線配置,rtc即晶振,IIC即總線,
#include "eeprom.h" //EEPROM的配置,EEPROM (Electrically Erasable Programmable Read-Only Memory),電可擦可編程只讀存儲(chǔ)器--一種掉電后數(shù)據(jù)不丟失的存儲(chǔ)芯片。
#include "io&led.h" //輸入輸出及l(fā)ed配置
#include "dm642_ide.h" //IDE接口配置,IDE(Integrated Drive Electronics),即電子集成驅(qū)動(dòng)器,
#include "dm642_flash.h" //flash存儲(chǔ)器配置
#include "dm642_uart.h" //通用異步收發(fā)傳輸器的配置,UART通常用在與其他通訊協(xié)定(如RS-232)的連結(jié)上
extern far void vectors();  //調(diào)用中斷向量表
static GPIO_Handle hGpio;  //GPIO句柄
 

 
void main()
{

 
/*-------------------------------------------------------*/
/* perform all initializations,開始初始化                           */
/*-------------------------------------------------------*/
         DM642_init();
/*----------------------------------------------------------*/
         /*中斷向量表的初始化*/
         IRQ_globalDisable();
         //Point to the IRQ vector table,指向中斷向量表
    IRQ_setVecs(vectors); 
/*----------------------------------------------------------*/
         hGpio = GPIO_open(GPIO_DEV0,GPIO_OPEN_RESET);
        
         GPIO_reset(hGpio);////GPIO復(fù)位
        
         //GPIO_config(hGpio,&MyGPIOCfg),GPIO的配置;

 
        
   
 
 
         GPIO_pinEnable(hGpio,GPIO_PIN15); //GPIO_PIN15管腳使能
         GPIO_pinEnable(hGpio,GPIO_PIN4);
         GPIO_pinEnable(hGpio,GPIO_PIN5);
         GPIO_pinEnable(hGpio,GPIO_PIN6);
         GPIO_pinEnable(hGpio,GPIO_PIN7);
         GPIO_pinDirection(hGpio,GPIO_PIN15,GPIO_OUTPUT);//GPIO_PIN15管腳輸出信號(hào)
    GPIO_pinDirection(hGpio,GPIO_PIN4,GPIO_OUTPUT);
         GPIO_pinDirection(hGpio,GPIO_PIN5,GPIO_OUTPUT);
         GPIO_pinDirection(hGpio,GPIO_PIN6,GPIO_OUTPUT);
         GPIO_pinDirection(hGpio,GPIO_PIN7,GPIO_OUTPUT);
         while(1)
         {
                   GPIO_pinWrite(hGpio,GPIO_PIN15,0); //輸出0低電平,燈亮
                   DM642_waitusec(0x10000); //等待10000微妙,1秒=1000000微秒
                   GPIO_pinWrite(hGpio,GPIO_PIN15,1); //輸出1高電平,燈滅
                   DM642_waitusec(0x10000);
 
 
                   GPIO_pinWrite(hGpio,GPIO_PIN4,0);
                   DM642_waitusec(0x10000);
                   GPIO_pinWrite(hGpio,GPIO_PIN4,1);
                   DM642_waitusec(0x10000);

 
                   GPIO_pinWrite(hGpio,GPIO_PIN5,0);
                   DM642_waitusec(0x10000);
                   GPIO_pinWrite(hGpio,GPIO_PIN5,1);
                   DM642_waitusec(0x10000);

 
                   GPIO_pinWrite(hGpio,GPIO_PIN6,0);
                   DM642_waitusec(0x10000);
                   GPIO_pinWrite(hGpio,GPIO_PIN6,1);
                   DM642_waitusec(0x10000);

 
                   GPIO_pinWrite(hGpio,GPIO_PIN7,0);
                   DM642_waitusec(0x10000);
                   GPIO_pinWrite(hGpio,GPIO_PIN7,1);
                   DM642_waitusec(0x10000);                  //這個(gè)程序是控制了GPIO15,GPIO4-7的高低電平
         }
}
 
 
.c的源文件編寫規(guī)范如下:

 
  a.首先引用頭文件:頭文件含有初始化設(shè)備的必要的接口函數(shù),宏定義等
  b.調(diào)用中斷向量表:
  c.static:不被編譯器優(yōu)化,常用于句柄的修飾
  d.自定義的函數(shù)可放在main()的前面或后面。
    外部函數(shù):自己定義的函數(shù),引用外部的文件定義的函數(shù)
    內(nèi)部函數(shù):DSP6000內(nèi)部定義了的函數(shù)就是內(nèi)部函數(shù)
  e.DSP6000中的數(shù)據(jù)格式一般為十六進(jìn)制。
  f.主要while循環(huán)---while(1),while(0)的區(qū)別

 
二、.cmd文件要點(diǎn)講解:
 
內(nèi)存分配文件的源代碼如下:
MEMORY
{
  boot: o = 00000000h l = 000400h /* all SRAM,在片內(nèi)SRAM中保留一塊Boot空間*/
  L2 :  o = 00000400h l = 0003fb00h /* all SRAM ,L2,為DSP片內(nèi)存儲(chǔ)器,是第2級(jí)存儲(chǔ)器[第一級(jí)存儲(chǔ)器包括獨(dú)立的程序Cach(L1P)和數(shù)據(jù)Cach(L1D) ],它是一個(gè)統(tǒng)一的空間,部分程序和數(shù)據(jù),統(tǒng)稱為L(zhǎng)2,可以作為普通的SRAM映射到存儲(chǔ)空間              */
  CE01: o = 80000000h l = 00100000h /* external memory   */
  CE02: o = 80100000h l = 00f000000h /* external memory   */
}

 
SECTIONS
{
    .boot_load  >       boot   /*引導(dǎo)程序入口映射到該boot空間*/
    .vecs       >       L2 /*映射ves_dm642.asp中定義的.vecs到L2空間*/
    .cinit      >       L2 /*初始化變量和常數(shù)表*/
    .text       >       L2 /*可執(zhí)行代碼段的映射*/
    .stack      >       L2 /*為系統(tǒng)堆棧分配存儲(chǔ)器。該段用于將變量傳遞至函數(shù)或者用來分配局部變量。*/
    .bss        >       L2 /*保留全局和靜態(tài)變量空間。在啟動(dòng)和導(dǎo)入的時(shí)候,C/C++編譯器會(huì)啟動(dòng)程序?qū)?cint段中的數(shù)據(jù)復(fù)制出來,以初始化.bss段中的變量。*/
    .const      >       L2  /*包含由C/C++限定詞const定義的字符串常量和數(shù)據(jù)*/
    .data       >       L2 /* 初始化數(shù)據(jù)段*/
    .far        >       L2 /*供外部文件調(diào)用的變量*/
    .switch     >       L2 /*控制語(yǔ)句段映射*/
    .sysmem     >       L2 /*初始化系統(tǒng)空間*/
    .tables     >       L2 /*初始化數(shù)據(jù)表*/
    .cio        >       L2  /*io口*/
    .external   >      CE02 /*外部變量的初始化*/
}                          
 

 
  1、 cmd文件要點(diǎn)
a.boot:仿真的時(shí)候boot可以不配置,在把程序燒寫到flash中時(shí)要配置,他的作用是
         放bootload引導(dǎo)程序
  b.怎樣劃分空間:o-origin 起始地址;l-length;區(qū)塊的標(biāo)記可以任意改,長(zhǎng)度不可以
    超越最終的空間地址
  c.劃分內(nèi)存,不一定全部劃分

 
2、.cmd文件之Section分析
C/C++的編譯環(huán)境包含以下段
已初始化段:
  (1).cinit段:包含初始化變量和常量表
  (2).const段:const定義的字符串常量和數(shù)據(jù)(他們不能同時(shí)被volatile定義)
        volatile--不能被編譯器優(yōu)化

 
  (3).switch段:包含跳轉(zhuǎn)表和大的switch聲明

 
  (4).text段:可執(zhí)行代碼段
 
 
 
  未初始化段:
   (1).bss段:保留全局和靜態(tài)變量空間
   (2).far段:保留遠(yuǎn)程的全局和靜態(tài)變量空間
   (3).stack段:為系統(tǒng)堆棧分配存儲(chǔ)器。用于將變量傳遞至函數(shù)或用來分配
                  局部變量
   (4).system段:為動(dòng)態(tài)存儲(chǔ)器函數(shù)malloc,calloc,realloc分分配存儲(chǔ)器空間。
                   如果程序沒有用到上面的函數(shù),就不會(huì)創(chuàng)建.system段
   所有我們的內(nèi)存分配,應(yīng)該盡量包含上面的初始化段和未初始化段中所定義的段。


 
                                                        曙海教育
                                                曙海嵌入式學(xué)院3G通信培訓(xùn)中心
                                            (MTK培訓(xùn),Android培訓(xùn),iPhone培訓(xùn))
                                                電話:021-51875830
                                                網(wǎng)址:http://www.51qianru.cn
                                                    講師:李現(xiàn)路
                                         版權(quán)所有-曙海教育 轉(zhuǎn)摘請(qǐng)注明作者和出處 課程有:

 
關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
返回頂部