【问题标题】:Create big buffer on a pic18f with microchip c18 compiler使用微芯片 c18 编译器在 pic18f 上创建大缓冲区
【发布时间】:2011-02-28 08:36:10
【问题描述】:

使用带有 pic18f 的 Microchip C18 编译器,我想在程序数据空间中创建一个 3000 字节的“大”缓冲区。

如果我把它放在 main() 中(在堆栈上):

char tab[127];

我有这个错误:

Error [1300] stack frame too large

如果我把它放在全局中,我有这个错误:

Error - section '.udata_main.o' can not fit the section. Section '.udata_main.o' length=0x0000007f

如何创建一个大缓冲区?你有关于如何使用 c18 管理 pic18f 上的大缓冲区的教程吗?

【问题讨论】:

    标签: pic microchip pic18


    【解决方案1】:

    这里有一个关于这个的教程:http://www.dwengo.org/tips-tricks/large-variables

    基本上,您在特殊部分中声明变量,并在默认部分中声明指向它的指针:

      #pragma udata DATA // section DATA
      int large_table[768];
    
      #pragma udata // return to default section
      int *table_ptr = &large_table[0];
    

    接下来,您更新链接描述文件以通过添加如下内容来定义大段:

    DATABANK   NAME=data      START=0x200          END=0x7FF          PROTECTED
    SECTION    NAME=DATA      RAM=data
    

    请注意,通常没有任何未映射的内存可供您放置 DATA 部分,但 USB 缓冲区通常是我的首选(当然,除非您在同一个项目中需要 USB...)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多