完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
有没有用proteus仿真过IAP的用例? 我写了一个用例, 总是仿真出错。有没有高手说说原因?
//IAP.c文件 void Page_Erase(int32u addr) { asm("mov r31, r25"); asm("mov r30, r24"); do{ SPMCR = 0x03; asm("SPM"); }while(SPMCR & (1 << SPMEN)); } void Flash_Fill_Buffer(int32u address, int8u data1, int8u data2) { asm("mov r0,r18"); asm("mov r1,r19"); //R0R1中为一个指令字 asm("mov r31,r17"); //Z寄存器中为填冲页内地址 asm("mov r30,r16"); do{ SPMCR = 0x01; asm("SPM"); }while(SPMCR &( 1<< SPMEN)); } //方式1写页面 void write_one_page1(int32u address, int8u *pdata, int len) { int i; Page_Erase(address); for(i=0;i Flash_Fill_Buffer( i, pdata, pdata[i+1]); } //开始写 asm("mov r31, r25"); asm("mov r30, r24"); do{ SPMCR = 0x05; asm("SPM"); }while(SPMCR & (1 << SPMEN)); //使能Rwww asm("mov r31, r25"); asm("mov r30, r24"); do{ SPMCR = 0x011; asm("SPM"); }while(SPMCR & (1 << SPMEN)); return; } //main.c文件 static int8u data[SPM_PAGESIZE]; //BOOTRST 编程, BOOT的大小2048字= 4096字节 int main() { __disable_interrupt(); memset(data, 0xAA, SPM_PAGESIZE); /*将data写到FLASH为0的地方*/ write_one_page1(0, data, SPM_PAGESIZE); while(1){ } } |
|
相关推荐
4个回答
|
|
我来帮你顶一个 别问我为什么 叫我雷锋
|
|
|
|
亲,没看到图片啊!你这个是IAR软件啊!
你仿真什么单片机!!!! 应该AVR,具体什么型号!AT90S系列,ATmega系列,ATtiny,都可以仿真的! 需要帮助,请说的在详细点。 |
|
|
|
就是就是就是!!! 亲我看到你好几次了,你很活跃的!欢迎你加入Proteus仿真来!我现在也真心需要帮手。 |
|
|
|
应该不能吧!没试过!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
4342 浏览 3 评论
5631 浏览 1 评论
5909 浏览 0 评论
Protues中自己封装的芯片元件无Program File、Clock Frequency选项怎么解决,求求大神了!
7634 浏览 1 评论
基于51单片机的车辆倒车雷达报警系统,HC-SR04超声波测距,全套资料
1213 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 22:34 , Processed in 0.558090 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号