一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 1657|回复: 16
收起左侧

[avr] M8V6 编译问题

[复制链接]
发表于 2016-10-18 16:36 | 显示全部楼层 |阅读模式
尝试去掉一些汇编代码,但FLASH_writeInt( )这个函数中 address &= 0xffe0 这一句报错:  opernds of & have illegal types ' pointer to const unsigned int' and 'unsigned int'
ICC6.31A编译器,请遇到过这个问题的坛友指点一下。


void FLASH_writeInt( const unsigned int *rom_address,unsigned int data)
{
        unsigned char i;
        const unsigned int *address;
       
        address = rom_address;
        address &= 0xffe0;
        ROM_free();
        ROM_page_buffer(rom_address,data);
        for(i=0;i<32;i++)
        {
                 if(address != rom_address)ROM_page_buffer(address,*address);
                address++;
        }
       
        ROM_page_erase(rom_address);
        ROM_page_write(rom_address);
}


发表于 2016-10-18 17:09 | 显示全部楼层

const unsigned int * address
改成:
 unsigned int * address
试试?

或 再试试:
address = (unsigned int)address & 0xffe0;
 楼主| 发表于 2016-10-18 17:24 | 显示全部楼层
junyee 发表于 2016-10-18 17:09

const unsigned int * address
改成:

这2种办法都试了一下,还是不行。
发表于 2016-10-18 18:01 | 显示全部楼层
只改这一句:
address = (unsigned int)address & 0xffe0;

我这边测试用 mplabe + picc 是可以通过的。
今天刚装系统,,iar和keil没试。
楼主留个QQ。

我没有用过avr和icc...
发表于 2016-10-18 18:51 | 显示全部楼层
本帖最后由 钟义亭 于 2016-10-19 09:01 编辑

mplabe + picc
是 PIC mcu 的 ?

ICC6.31A编译器
是 AVR 的  gcc
新版本 , 不相容 舊的
我不知 , 在哪看過
原作者 , 是用 當時版本
不會用 , 最新版 的

M8 V6 , 除非亂碼
哪來的 傳上來 ,  找別人 幫編譯


2.png
3.png



寫程式 都用 , 當下版本
一定用 winxp



 楼主| 发表于 2016-10-18 19:35 | 显示全部楼层
junyee 发表于 2016-10-18 18:01
只改这一句:
address = (unsigned int)address & 0xffe0;

ICC6.31A 编译不过
发表于 2016-10-18 20:31 | 显示全部楼层
unsigned int * address = (unsigned int *)((unsigned long)rom_address & 0xffe0); 搞定
发表于 2016-10-18 20:35 | 显示全部楼层
RE:5#
是PIC的.

我平时一般是玩STM8/32, 前段时间也玩了于PIC. 51多年不玩了. AVR倒真是没玩过,片子太贵了.
既然我这边 picc s可以编译通过,那至少语法不会有重大错误,,,不同编译器细微上有差别.
记得刚学时用的是keil 51,,变量检查好像很宽松.
有的编译器则要求较严格.
像 const char 和 char.   int(2字节时) 和 short ..
楼主这里的    "const unsigned int *" 和 "unsigned int",前面是一个指向const unsigned int 的指针(一般也都是2字节长度,具体要查MCU手册),unsigned int 在8位MCU中一般是2字节.

###
另,楼主要是仍没解决,可以把IDE和工程文件打包发过我邮箱  junyee#qq.com  (#换成@),,我今晚回家了,明天帮你改.


本人才疏,所说不一定准确,请自行斟误
 楼主| 发表于 2016-10-18 20:56 | 显示全部楼层
treeyan 发表于 2016-10-18 20:31
unsigned int * address = (unsigned int *)((unsigned long)rom_address & 0xffe0); 搞定

还是编译不过: lvalue required
 楼主| 发表于 2016-10-18 22:11 | 显示全部楼层
钟义亭 发表于 2016-10-18 18:51
mplabe + picc
是 PIC mcu 的 ?

多谢你的截图. 请问你的这个是ICC的哪个版本。我用ICC6.31A通不过的。

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-6-2 04:48 , Processed in 0.055708 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表