完善资料让更多小伙伴认识你,还能领取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仿真来!我现在也真心需要帮手。 |
|
|
|
|
|
应该不能吧!没试过!
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
4526 浏览 0 评论
5905 浏览 0 评论
PROTUES仿真no model specified for adc0809,谁有ADC0809的model?
18160 浏览 1 评论
单片机应用技术的ISIS professional电路设置仿真老是报错怎么办
18389 浏览 0 评论
21731 浏览 3 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-12 03:35 , Processed in 0.729619 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3673