使用微芯片c18编译器在pic18f上创建大缓冲区

时间:2010-06-06 10:32:52

标签: pic microchip pic18

将Microchip C18编译器与pic18f配合使用,我想在程序数据空间中创建一个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上的大缓冲区的教程吗?

1 个答案:

答案 0 :(得分:2)

以下是这方面的教程: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 ...)< / p>