对于库函数在keil中调用不是很清楚,求解

对于库函数在keil中调用不是很清楚,求解,第1张

缺少外部调用的声明
在system_LPC17xxh
中添加
extern uint32_t SystemCoreClock;
或者直接用_CORE_CLK替代主函数中的SystemCoreClock。

在keil C51中,直接调用库函数:
#include<intrinsh> // 其中包含了对部分汇编指令的调用申明
_nop_(); // 产生一条NOP指令
_push_(acc); // 产生一条push指令
以下是intrinsh的内容
/--------------------------------------------------------------------------
INTRINSH
Intrinsic functions for C51
Copyright (c) 1988-2004 Keil Elektronik GmbH and Keil Software, Inc
All rights reserved
--------------------------------------------------------------------------/
#ifndef __INTRINS_H__
#define __INTRINS_H__
extern void _nop_ (void);
extern bit _testbit_ (bit);
extern unsigned char _cror_ (unsigned char, unsigned char);
extern unsigned int _iror_ (unsigned int, unsigned char);
extern unsigned long _lror_ (unsigned long, unsigned char);
extern unsigned char _crol_ (unsigned char, unsigned char);
extern unsigned int _irol_ (unsigned int, unsigned char);
extern unsigned long _lrol_ (unsigned long, unsigned char);
extern unsigned char _chkfloat_(float);
extern void _push_ (unsigned char _sfr);
extern void _pop_ (unsigned char _sfr);
#endif

你说的是gcvt函数吧?
标准库函数,只需要包含头文件:<stdlibh>即可使用。
函数名: gcvt
用 法: char gcvt(double value, int ndigit, char buf);
包含头文件:<stdlibh>
参数
value——被转换的值。
Digits——存储的有效数字位数。
Buffe——结果的存储位置。
返回值
返回一个指向结果的存储位置的指针[1]
说明
gcvt函数把一个浮点值转换成一个字符串(包括一个小数点和可能的符号字节)并存储该字符串在buffer中。该buffer应足够大以便容纳转换的值加上结尾的空字符('\0'),它是自动添加的。如果一个缓冲区的尺寸为digits的尺寸+1,该函数覆盖该缓冲区的末尾。这是因为转换的字符串包括一个小数点以及可能包含符号和指数信息。不提供上溢出。gcvt试图以十进制格式产生digits数字,如果不可能,它以指数格式产生digits数字,在转换时可能截除尾部的0。

KEIL主要是为单片机服务的,跟标准C的库函数肯定是有区别,不仅KEIL如此,任何编译环境都会在标准C的基础上做自己的修改的。
如果你想用的函数没有,并且找不到替代的,那就只能自己写,不用想着往stdioh里面加了,加个函数声明也没用的,因为标准库的可执行文件是已经编译好的,用的时候直接链接进去的


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/13205132.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-20
下一篇 2023-06-20

发表评论

登录后才能评论

评论列表(0条)

保存