PIC中实现printf函数出现:Warning [2066]

2020-03-23来源: eefocus关键字:PIC  printf函数  Warning  [2066]

为什么会出现“Warning [2066] type qualifier mismatch in assignment”(警告[2066] 指定的类型限定符不匹配)?


解答:

MPLAB C18提供的库是使用大代码模型编译(-ml 命令行选项)的。默认情况下,MPLAB IDE和编译器将使用小代码模型编译应用程序。例如,随编译器提供的printf函数期望收到“const far rom char *”,但没有为应用程序选择大代码模型时,应用程序实际发送“const near rom char *”到printf 函数。正是far和near间的差别引起了“type qualifier mismatch in assignment”警告。要消除这些警告,应采取以下三种措施中的一种:


1) 使用小代码模型重新编译随MPLAB C18 提供的库(仅在所有应用程序均使用小代码模型时推荐);

2) 在IDE 中为特定应用程序启用大代码模型(可能会增加代码尺寸);

3) 将常量字符强制转换为常量far rom 字符串指针,如:printf ((const far rom char *)”This is a testnr”);


其中2)更改方法如下:


当通过包含stdio.h 使用标准库时,应为项目选择大代码模型。转到Project>Build Options>Project 对话框,并选择MPLAB C18 选项卡,然后选择Categories: Memory Model (类别:存储模型)并选中Large code model (> 64Kbytes) (大代码模型(> 64 KB))。


关键字:PIC  printf函数  Warning  [2066] 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic492391.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:PIC18单片机配置位设置
下一篇:PIC单片机的学习——时钟的配置

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

pic之I2C设置
在pic中设置i2c:初始化的时候不能把引脚设置为开漏输出,否则在模块使能的时候,两个引脚的电平会一直拉低的。在寄存器I2CxION直接把bit<15> 设置为1,设置波特率,后面的参考资料;
发表于 2020-03-09
PIC16位单片机——彻底弄懂时钟
一直以来写程序都是看参考资料和书,这次的16位单片劫dsPIC33EP32GP502没有一点资料。因此趁机也好好深入学习一下!首先看振荡器的选择吧。首先看一下时钟框图: 我们使用的是外部晶振,所以配置为HS,FCY是CPU时钟,FP是外设时钟,FCY=FP(除打盹模式外)。FCY=Fosc/2。也就是cpu时钟是晶振频率的1/2。下面还有分频。DOZE<2:0>:011 = FCY 被 8 分频 (默认)处理器时钟分频比选择位。因此实际的FCY=0.5MHz(使用8M的外部晶振,并八分频8/2/8=0.5MHz)。 看一下振荡器选择配置位的说明:  这里我们需要看的是FOSCSEL配置位 第
发表于 2020-03-09
PIC16位单片机——彻底弄懂时钟
PIC单片机入门_MPLAB 集成开发环境和 MPASM编译器
1.七大汇编指令1.1 #INCLUDE语法:  #include “文件名.*” 或<文件名.*> 或无括号 或 引号示例:   #INCLUDE p12f675.inc1.2 #DEFINE用于定义变量和分配初始值;用户友好的名字被分配给常数,寄存器 ,管脚名等. 使程序易读;例:   #DEFINE MYCONSTANT H’5A’1.3 _ _CONFIG设置配置位1.4 ORG语法: ORG   <address>例: ORG 0x0000描述:  定义起始地址(0x0000).1.5 EQU语法:  &nbs
发表于 2020-03-09
PIC单片机入门_MPLAB 集成开发环境和 MPASM编译器
PIC单片机的第一个例程
今天白天在网上找软件找了好久,在官网下了MPLAB,和PICC还要注册比较麻烦。今天用的软件Protues仿真的。 第一个程序点亮一盏灯,电路很简单。下面贴出程序。 #include <pic.h>//包含头文件int main(void){    TRISB=0x00;//PortB方向寄存器,PortB为输出         while(1)    {         
发表于 2020-03-09
PIC18Fxx单片机IO设置注意事项
通用IO结构注意事项:模拟选择寄存器(ANSELx):复位后,ANSELx位默认为模拟模式。 要将任何引脚用作数字通用或外设输入,必须通过用户软件将相应的ANSEL位初始化为0。开漏控制寄存器(ODCONx):使用I2C引脚时,必须设置漏极开路控制。
发表于 2020-03-09
PIC18Fxx单片机IO设置注意事项
PIC单片机存储器拓展
生活中感应水龙头越发的常见了,公共场所使用也更加的频繁,感应水龙头,顾名思义,就是通过红外线感应出水。那么感应水龙头的功能是通过什么实现的呢?感应水龙头,是通过红外线反射原理,当人体的手放在水龙头的红外线区域内,红外线发射管发出的红外线由于人体手的摭挡反射到红外线接收管,通过集成线路内的微电脑处理后的信号发送给脉冲电磁阀,电磁阀接受信号后按指定的指令打开阀芯来控制水龙头出水;当人体的手离开红外线感应范围,电磁阀没有接受到信号,电磁阀阀芯则通过内部的弹簧进行复位来控制水龙头的关水。感应水龙头供电检测的功能实现主要通过英锐恩开发芯片PIC16F684。就是通过芯片程序检测感应水龙头供电情况。当芯片检测电池没有正常供电时,芯片会选
发表于 2020-03-08
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved