我是靠谱客的博主 深情画板,最近开发中收集的这篇文章主要介绍keil4汇编调用c语言,在keil中,汇编中调用c函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天遇到个问题,以为是汇编中调用C函数的原因,其实不是这个原因,在这里也温习一下在ARM汇编调用C函数的方式。若在汇编中调用C文件中的函数 void fun_c(void),只需要在调用之前,IMPORT fun_c ,其中 keil工具是不允许汇编语句顶格写,不然会报错。IMPORT 相当于C中的extern。

言归正传,今天遇到的问题是这样的。

在nxp_lpcopen网站下载的例程,lwip_lpc-50a3c33.tar.gz,D:nxplpcopenlwip_lpc-1.1lwip_lpcnxpcommonexampleslpc177x_8xea1788ea1788_httpraw_sakeil 运行此工程文件,编译无法通过,只是lwip部分代码,没有lpc177x_8x的板级支持文件,在http://www.pudn.com/downloads522/sourcecode/embedded/detail2164358.html

下载工程,在D:nxplpcopenlwip_lpc-1.1目录下,新建文件夹LPC177X_8X,将其 BoardSupport 和 Core ,Drivers文件夹拷贝到LPC177X_8X,再一次编译:

报错如下:

.__DRAMexample.axf: Error: L6218E: Undefined symbol SDRAMInit (referred from startup_ea1788.o).

终于找到原因,虽然工程中添加有了包含SDRAMInit的c文件,但是没有编译,作如下修改,修改两处代码即可,

#include "bsp.h"

#define _EMC  //modify by me

#ifdef __BUILD_WITH_EXAMPLE__

#include "lpc177x_8x_libcfg.h"

#else

#include "lpc177x_8x_libcfg_default.h"

#endif /* __BUILD_WITH_EXAMPLE__ */

#if 1 //(_CURR_USING_BRD == _EA_PA_BOARD)  //modify by me

#ifdef _EMC

发现在调试过程中,#if 1  #endif 或者#if  0  #endif 很好用,在某些情况下起到注释的作用。

最后

以上就是深情画板为你收集整理的keil4汇编调用c语言,在keil中,汇编中调用c函数的全部内容,希望文章能够帮你解决keil4汇编调用c语言,在keil中,汇编中调用c函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部