移植UcosIII与EMWIN之后程序运行正常!但是由于在移植其他程序过程中必须勾选Use MicroLIB。结果程序就不能正确进行了!每当调用GUI的语句的时候GUI_Delay(500)的时候运行完后就进入硬件错误中断函数中!过程中尝试过:1:将.s文件中的Stack_Size 改大!
2:选或者不选浮点PFH
3:修改os_cpu_c.c与os_cpu_a.asm
4: 程序跟正常运行时候一样,唯一却别就是有没有勾选Use MicroLIB
5:主函数中将任务堆栈改大
但是仍然不行,还是会进入硬件错误中断,只有把Use MicroLIB不勾选才能正确运行!但是我要移植的其他程序是必须打上勾的!
请问各位朋友们,我勾选Use MicroLIB对UcosIII与EMWIN的移植到底可能造成了什么影响,以至于出现如此错误!请大家多给意见!谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
谢谢!这个问题好像很少人问!还请大家伙多顶一下!
//如果使用ucos,则包括下面的头文件即可.
#if SYSTEM_SUPPORT_OS
#include "includes.h" //ucos 使用
#endif
//PA9->RX, PA10->TX
//串口1初始化
//加入以下代码,支持printf函数,而不需要选择use MicroLIB
#if 1
#pragma import(__use_no_semihosting)
//标准库需要的支持函数
struct __FILE
{
int handle;
/* Whatever you require here. If the only file you are using is */
/* standard output using printf() for debugging, no file handling */
/* is required. */
};
/* FILE is typedef’ d in stdio.h. */
FILE __stdout;
//定义_sys_exit()以避免使用半主机模式
_sys_exit(int x)
{
x = x;
}
//重定义fputc函数
int fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕
USART1->DR = (u8) ch;
return ch;
}
#endif
一周热门 更多>