stm32f769ni-discovery编译例程需要修改

找不到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了;

posted @ 2018-07-11 17:09  得一寸  阅读(1219)  评论(0编辑  收藏  举报