标签:不用 5.0 flow 文件 工程 没有 call tac include
找不到cmsis_os.h:
方法:在pack文件夹下找cmsis_os.h文件,有四个,选RTOS2文件夹下的。
原因:cmsis_os2.h是新版本,cmsis_os.h封装了cmsis_os2.h,程序未包含cmsis_os.h;
结果:添加目录C:\Keil_v5\ARM\PACK\ARM\CMSIS\5.0.0\CMSIS\RTOS2\RTX\Include1,这里有cmsis_os.h文件
osRtxErrorStackUnderflow等未定义:
方法:修改名称
结果:其实直接在source文件夹下添加RTX_Config.c,在RTOS2\RTX\Config下会解决后边的很多问题;
os_config未定义:
结果:添加路径\RTOS2\RTX\Include,只有这个路径下的文件有os_config实体定义;
GUI_X_RTE的一些函数没有实体定义:
原因:GUI_X_RTE是以前编的,CMSIS更新了,函数名称变了,因此要找到以前的函数。
结果:Source中添加RTOS2\RTX\Library\cmsis_os1.c
os_config没有定义:
方法:只有下面路径的rtx_config.h有这个定义;
结果:编译器增加rtx_config.h的路径\RTOS2\RTX\Include;
没有SHP:
结果:core_cm.h中SHP更改为SHPR
stm32f7xx.h选择器件型号:
stm32f7xx.h中去掉注释 stm32f769 ;
os_error的名称不匹配;
RTX_Config.c
OS Error Callback function中的错误编码名称修改,RTX_Config.c中把Rtx改为_;例如:osRtxErrorStackUnderflow改为os_ErrorStackUnderflow;
错误编码的名称在rtx_os.h中定义的,所以出现问题的原因是这两个文件的生成日期不一样?还是两个不同单位编写的?
RTX_Config.c位于工程目录-RTE-CMSIS下,有版本号;包含编译器头文件;
rtx_os.h位于RTOS2-RTX-Include,而这个目录下有rtx_config.c,注意到和上一个文件只是大小写不同,并且里边的程序更复杂。
RTX_Config.c中函数名osRtxErrorNotify,更改为os_Error,和rtx_os.h中的定义对应起来;
函数名osRtxIdleThread,更改为os_IdleThread,和rtx_os.h中的定义对应起来
RTX_Config.c在CMSIS组件里;
GUI_X_RTE.c
找不到cmsis.h文件;cmsis_os2.h更高级一点,函数的参数也不一样,直接更改头文件会有问题。所以添加目录C:\Keil_v5\ARM\PACK\ARM\CMSIS\5.0.0\CMSIS\RTOS2\RTX\Include1,这里有cmsis_os.h文件;但这样的话,c程序要不要跟着改变呢;果然报错了,提到里边的一些函数没有实体;要把拥有这些实体的c程序添加到工程中;cmsis.h已经#inlcude了cmsis_os2.h了;
编译器增加cmsis_os.h的路径\RTOS2\RTX\Include1
应该是GUI_X_RTE这个文件写的比较早,用到CMSIS组件,但现在CMSIS组件更新了,里边没有GUI_X_RTE以前用到的函数
Source中添加RTOS2\RTX\Library\cmsis_os1.c解决了;
stm32f7xx.h中去掉注释 stm32f769 ;
core_cm.h中SHP更改为SHPR;
rtx_kernel.c
os_Config没有定义;对应os_info,查找const os_config_t os_Config只有如下文件夹有定义rtx_config.h;编译器增加rtx_config.h的路径\RTOS2\RTX\Include
Invalid kernel tick frequency
Source中添加RTOS2\RTX\Config\RTX_Config.c,maybe不用includertx_config.h的。因为这个文件夹下已经include了;
标签:不用 5.0 flow 文件 工程 没有 call tac include
原文地址:https://www.cnblogs.com/deyicun/p/9295595.html