stm32f769ni-discovery编译例程需要修改
Posted deyicun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stm32f769ni-discovery编译例程需要修改相关的知识,希望对你有一定的参考价值。
找不到cmsis_os.h:
方法:在pack文件夹下找cmsis_os.h文件,有四个,选RTOS2文件夹下的。
原因:cmsis_os2.h是新版本,cmsis_os.h封装了cmsis_os2.h,程序未包含cmsis_os.h;
结果:添加目录C:Keil_v5ARMPACKARMCMSIS5.0.0CMSISRTOS2RTXInclude1,这里有cmsis_os.h文件
osRtxErrorStackUnderflow等未定义:
方法:修改名称
结果:其实直接在source文件夹下添加RTX_Config.c,在RTOS2RTXConfig下会解决后边的很多问题;
os_config未定义:
结果:添加路径RTOS2RTXInclude,只有这个路径下的文件有os_config实体定义;
GUI_X_RTE的一些函数没有实体定义:
原因:GUI_X_RTE是以前编的,CMSIS更新了,函数名称变了,因此要找到以前的函数。
结果:Source中添加RTOS2RTXLibrarycmsis_os1.c
os_config没有定义:
方法:只有下面路径的rtx_config.h有这个定义;
结果:编译器增加rtx_config.h的路径RTOS2RTXInclude;
没有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_v5ARMPACKARMCMSIS5.0.0CMSISRTOS2RTXInclude1,这里有cmsis_os.h文件;但这样的话,c程序要不要跟着改变呢;果然报错了,提到里边的一些函数没有实体;要把拥有这些实体的c程序添加到工程中;cmsis.h已经#inlcude了cmsis_os2.h了;
编译器增加cmsis_os.h的路径RTOS2RTXInclude1
应该是GUI_X_RTE这个文件写的比较早,用到CMSIS组件,但现在CMSIS组件更新了,里边没有GUI_X_RTE以前用到的函数
Source中添加RTOS2RTXLibrarycmsis_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的路径RTOS2RTXInclude
Invalid kernel tick frequency
Source中添加RTOS2RTXConfigRTX_Config.c,maybe不用includertx_config.h的。因为这个文件夹下已经include了;
以上是关于stm32f769ni-discovery编译例程需要修改的主要内容,如果未能解决你的问题,请参考以下文章
STM32F769I-disc片内flash对接fal框架(基于RT-thread)