aduc7020 flash 读写异常,求教!

[复制链接]
 楼主| fanguluke 发表于 2007-9-9 09:09 | 显示全部楼层 |阅读模式
unsigned&nbsp;short&nbsp;int&nbsp;read_flash_word(unsigned&nbsp;short&nbsp;int&nbsp;addr)<br />{unsigned&nbsp;char&nbsp;ss;<br />&nbsp;&nbsp;&nbsp;&nbsp;FEEMOD&nbsp;=0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//关闭页面,禁止修改<br />&nbsp;&nbsp;&nbsp;&nbsp;FEEADR&nbsp;=&nbsp;addr;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;set&nbsp;address<br />&nbsp;&nbsp;&nbsp;&nbsp;FEECON&nbsp;=&nbsp;0x01;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;single&nbsp;read&nbsp;command<br />&nbsp;&nbsp;&nbsp;&nbsp;flash_error&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;ss&nbsp;=&nbsp;FEESTA&0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(!ss&nbsp;&&&nbsp;(flash_error++&lt=2000))&nbsp;ss&nbsp;=&nbsp;FEESTA&0x01;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;wait&nbsp;data&nbsp;read&nbsp;ready<br />&nbsp;&nbsp;&nbsp;&nbsp;return(FEEDAT);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;one&nbsp;byte&nbsp;data<br />}<br /><br /><br />void&nbsp;write_flash_word(unsigned&nbsp;short&nbsp;int&nbsp;addr,&nbsp;unsigned&nbsp;short&nbsp;int&nbsp;*word,&nbsp;unsigned&nbsp;short&nbsp;int&nbsp;count)<br />{&nbsp;unsigned&nbsp;short&nbsp;int&nbsp;erased_page,&nbsp;i;<br />&nbsp;&nbsp;unsigned&nbsp;char&nbsp;ss;<br />&nbsp;&nbsp;erased_page&nbsp;=&nbsp;0x01;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//页面起始地址的低九位应该为0,设置为1表示开始就需要页面清空<br />&nbsp;&nbsp;for(i=0;&nbsp;i&ltcount;&nbsp;i++)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(erased_page!=(addr&0xFE00))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Erase_Page(addr);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;erased_page&nbsp;=&nbsp;addr&0xFE00;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;FEEADR&nbsp;=&nbsp;addr++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addr++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;set&nbsp;address&nbsp;&nbsp;//地址必须&nbsp;“+&nbsp;2”<br />&nbsp;&nbsp;&nbsp;&nbsp;FEEDAT&nbsp;=&nbsp;*word;&nbsp;word++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;set&nbsp;data&nbsp;value<br />&nbsp;&nbsp;&nbsp;&nbsp;FEECON&nbsp;=&nbsp;0x02;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;write&nbsp;command<br />&nbsp;&nbsp;&nbsp;&nbsp;flash_error&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;ss&nbsp;=&nbsp;FEESTA&0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(!ss&nbsp;&&&nbsp;(flash_error++&lt=2000))&nbsp;ss&nbsp;=&nbsp;FEESTA&0x01;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;wait&nbsp;data&nbsp;read&nbsp;ready<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;FEEMOD&nbsp;=0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//关闭页面,禁止修改<br />}<br /><br /><br />执行完上面的任意一个函数,调试中断异常,仿真程序也飞了,求教大虾了!
123654789 发表于 2007-9-9 10:53 | 显示全部楼层

本人 123654789 于 ↑ 这个 时间,到此地 一游

  
steaven 发表于 2007-9-10 22:14 | 显示全部楼层

请使用__ramfunc关键字将Flash操作函数放在RAM中执行

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

37

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

14

主题

37

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部