技术源于采集,成功源于倒塌!

  • 《HotPower的水潭》21IC主站
  • 《HotPower的水潭》EDN副站
  • 《HotPower的水潭》dianyuan副站
  • 《HotPower的水潭》MCUBLOG副站
  • 设为首页加入收藏联系匠人管理入口21IC首页21IC博客21IC社区侃单片机回复的贴参与的贴

    天气预报
    菜农日历

    绿色蔬菜

    载入中...

    农家信息

    载入中...

    水潭流量
    (2006-10-21开始)

     
     

    芯片专题

    器件专题

    软件专题

    硬件专题

    综合专题

    项目专题

    原创专题

    LCD LED
    按键 触摸键
    E2PROM
    电池 电机
    电阻 电容 电感

    滤波算法
    串行通讯

    I2C
    红外遥控
    充电技术

    匠人手记
    匠人夜话
    网络心路

    关于DSP281X变量地址定位问题
    雁塔菜农 发表于 2008-4-17 2:45:00
    hotpower 发表于 2008-4-17 01:37 DSP 技术 ←返回版面 按此察看该网友的资料 按此把文章加入收藏夹 按此编辑本帖

    楼主: 关于DSP281X变量地址定位问题

    在结合硬件的编程中,有些变量需要特定地址.

    一般可以采用指针变量.
    例如:
    unsigned int *LedReg   = (unsigned int *)0x5f00;//发光二极管地址
    *LedReg = 0xFF;

    但有些时候感觉不是太好时,可以像Keil那样

    unsigned int LedReg at 0x5f00;//发光二极管地址
    LedReg = 0xFF;

    这样看着"比较顺眼"~~~
    但在TIDSP的CCS环境下,不能采用at或__at等来定位地址.
    不过CCS也提供了类似的手段,不过有些"麻烦".

    具体实现:

    1.在CMD文件中

    MEMORY
    {
    PAGE 0:    /* Program Memory */

    PAGE 1:    /* Data Memory */

       LED_REG     : origin = 0x005f00, length = 0x00001 /*发光二极管地址*/
       LCD_ComL    : origin = 0x005100, length = 0x00001
       LCD_ComH    : origin = 0x005200, length = 0x00001
       LCD_DatL    : origin = 0x005300, length = 0x00001
       LCD_DatH    : origin = 0x005400, length = 0x00001
       EINT_REG    : origin = 0x005c00, length = 0x00001
       KEY_REG     : origin = 0x005b00, length = 0x00001
       RCLK_REG    : origin = 0x005500, length = 0x00001 /*数码管锁存地址*/
    }


    SECTIONS
    {
       LedDataRegsFile   : > LED_REG,     PAGE = 1
       LcdComlRegsFile   : > LCD_ComL,    PAGE = 1
       LcdComhRegsFile   : > LCD_ComH,    PAGE = 1
       LcdDatlRegsFile   : > LCD_DatL,    PAGE = 1
       LcdDathRegsFile   : > LCD_DatH,    PAGE = 1
       KeyRegsFile       : > KEY_REG,     PAGE = 1
       EintRegsFile      : > EINT_REG,    PAGE = 1
       RclkRegsFile      : > RCLK_REG,    PAGE = 1
    }

    2.在C/C++文件中


    #ifdef __cplusplus
    #pragma DATA_SECTION("LedDataRegsFile") /*C++语言格式*/
    #else
    #pragma DATA_SECTION(LedRegs,"LedDataRegsFile");/*C语言格式*/
    #endif
    volatile unsigned int LedRegs;

    /*以下为C++语言格式*/

    #pragma DATA_SECTION("LcdComlRegsFile")
    volatile unsigned int LcdComL;
    #pragma DATA_SECTION("LcdComhRegsFile")
    volatile unsigned int LcdComH;
    #pragma DATA_SECTION("LcdDatlRegsFile")
    volatile unsigned int LcdDatL;
    #pragma DATA_SECTION("LcdDathRegsFile")
    volatile unsigned int LcdDatH;

    #pragma DATA_SECTION("EintRegsFile")
    volatile unsigned int EintRegs;

    #pragma DATA_SECTION("KeyRegsFile")
    volatile unsigned char KeyRegs;

    #pragma DATA_SECTION("RclkRegsFile")
    volatile bool SpiRclkRegs;


    3.在应用程序中

    extern unsigned int LedRegs;
    extern volatile unsigned int EintRegs;
    extern volatile unsigned char KeyRegs;
    extern volatile bool SpiRclkRegs;
    //............
    LedRegs = 0xff;//这样就不需要指针变量的写法了
    //..................

    //HotPower@126.com 2008.4.17 1:34



    阅读全文 | 回复(0) | 引用通告 | 编辑
     


    发表评论:
    载入中...

    菜贩子摊位 [投放]

     



    站内搜索

    站外搜索


    百度  google
    mp3  歌词 
    图片  FLASH 
    知道  文档
    新闻  词典 
    地图  mp3 
    软件  天网 
    雅虎  爱问 
    搜狗  讯雷 
    网讯  华军 
    天空 

    21IC器件搜索
    匠人代理商品

    学习板、开发板、编程器、下载器、仿真器(查看详情……)

    匠人广告位 [投放]

    新鲜蔬菜

    匠人写书近况

    匠人团队精华

    匠人往日酷贴

    社区热点 更多>>

    载入中...

    2007年匠人的新目标是写书。书名:《匠人手记——一个单片机工作者的实践与思考》。
    感谢各位网友的关注、支持和鼓励!(点击查看写书详情和近况)

     

    匠人写书调查

    匠人栏目调查

    匠人原创

    农友评论

    农友留言

    载入中...

    载入中...



    大千八卦

    菜地友情连接

    新浪新闻:
    新浪财经:
    AK58新闻:
    新浪股票:
    新浪股票:
    证券之星:

     [更多酷站连接]

     

     

    [欢迎交换连接]

    [百宝箱之与非门分舵]

    [电脑圈圈的家当]

    [柔月阁]

     

     

     

     

     

    MCU博客-中国电子工程师博客网 

    大学生电子网 

     

     

     

     

     

    《HotPower的水潭》