void task2_task(void *p_arg) { u8 task2_num=0; const unsigned char *point; u16 i=0; delay_init(); //ÑÓʱº¯Êý³õʼ»¯ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//ÉèÖÃÖжÏÓÅÏȼ¶·Ö×éΪ×é2£º2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶ // uart_init(115200); //´®¿Ú³õʼ»¯Îª115200 LED_Init(); //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú // KEY_Init(); //°´¼ü³õʼ»¯ AT24CXX_Init(); //IIC³õʼ»¯ OLED_init(); point= &picture_tab[0]; while(1) { OLED_ShowString(0,15,"2023/5/18",16); OLED_ShowChinese(0,0,0,16,1); OLED_ShowChinese(16,0,1,16,1); OLED_ShowChinese(32,0,2,16,1); delay_ms(1000); OLED_Refresh_Gram(); //¸üÐÂÏÔʾµ½OLED if(++i > 3) { LED1=!LED1;//ÌáʾϵͳÕýÔÚÔËÐÐ i=0; } }..\OBJ\uCOSIII-EP01.axf: error: L6047U: The size of this image (39012 bytes) exceeds the maximum allowed for this version of the linker这个错误具体怎么修改
时间: 2024-04-06 09:29:47 浏览: 15
这个错误是由于链接器限制了可执行文件的最大大小,而你的程序已经超出了这个限制。要解决这个问题,可以尝试以下几种方法:
1. 减小程序的代码和数据大小,去掉一些不必要的代码或数据。
2. 修改链接器的设置,增大可执行文件的最大大小。具体方法要根据你使用的开发工具和编译器来确定,可以参考相关文档或者搜索相关资料。
3. 如果你的程序确实很大,可以考虑使用动态链接库或者分离编译的方式,将程序分成多个模块,分别编译链接。这样可以减小单个可执行文件的大小,也方便程序的管理和维护。
具体的修改方法需要根据具体情况来确定,如果你需要更详细的帮助,请提供更多的信息和上下文。
相关问题
typedef void (*os_task_ptr)(void *p_arg);的typedef怎么就变成函数指针了
在C语言中,`typedef`关键字可以用来定义类型别名。在这个语句中,`os_task_ptr`被定义为一个函数指针类型的别名。具体来说,`os_task_ptr`被定义为一个参数为`void*`类型,返回值为`void`类型的函数指针。因此,我们可以将函数指针变量赋值给`os_task_ptr`类型的变量,使其指向相应的函数。例如:
```c
void my_task(void *arg) {
// do something
}
os_task_ptr task_func = my_task;
```
这里,`task_func`就是一个`os_task_ptr`类型的变量,它指向`my_task`函数。当我们调用`task_func`时,实际上就是调用`my_task`函数。
ucos系统void OS_TaskStat (void *p_arg)
UCOS系统中的void OS_TaskStat(void *p_arg)函数是用来获取任务状态信息的。该函数的参数p_arg是一个指向任务控制块的指针,用于指定要获取状态信息的任务。
在该函数中,可以通过任务控制块中的一些字段来获取任务的状态信息,例如任务的优先级、堆栈使用情况、任务是否处于挂起状态等。具体的实现可能会根据UCOS系统的版本和配置有所不同,但一般来说,该函数会将获取到的状态信息保存在一些全局变量中,供其他部分使用。
注意,该函数是在UCOS系统的内核中实现的,一般不需要用户主动调用。它会在系统启动时自动被调用,用于初始化任务状态信息,并在需要时更新任务状态。如果需要获取任务状态信息,可以通过其他UCOS提供的接口来访问这些全局变量。