EEPROM字节写入 的两个问题。

qq_28327793 2015-07-23 11:57:13
本人新手。在看到以下程序时,理解有问题。望高手指点。
void EEPROM_Byte_Write(unsigned int address,unsigned char data)
{
FLASH_CR1_bit.FIX=1;
FLASH_DUKR=0XAE;
FLASH_DUKR=0X56;
* (unsigned char *) address=data;
while(FLASH_IAPSR_bit.EOP==1);
}



1、形参中的address是个变量,而倒数第二行程序中对变量address强行转为指针,为什么。
2、while等待语句中应该是==0吧?我个人以为。因为编程结束才跳出。内部的话应该是==0.。

谢谢帮助。
...全文
424 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kusk 2015-07-24
  • 打赏
  • 举报
回复
1. 因为传进这个变量的值本身,也是指针的值转型过来的unsigned int,所以使用的时候,可以转回去,这个依赖于这个前提; 2. 语句的意思是,FLASH_IAPSR_bit.EOP等于1时循环,也就是不等于1时才跳出。这个需要看上下文语义了。
欧阳春晖 2015-07-24
  • 打赏
  • 举报
回复
引用 1 楼 Kusk 的回复:
1. 因为传进这个变量的值本身,也是指针的值转型过来的unsigned int,所以使用的时候,可以转回去,这个依赖于这个前提; 2. 语句的意思是,FLASH_IAPSR_bit.EOP等于1时循环,也就是不等于1时才跳出。这个需要看上下文语义了。
最后那句话是等待写入IO完成的意思
欧阳春晖 2015-07-24
  • 打赏
  • 举报
回复
楼主这是学嵌入式吧,请原谅我说话直,我建议从基础学起,最后那个是等待写入完成,都==0了还等毛线 至于第二个,是吧一个address传进去的是int,要直接转换成指针,强行访问这个地址 EEROM的底层支持系统的编写和ring 3的不一样,建议楼主从头学起,楼主这看的是RTOS访问EEROM的驱动程序吧?或者单片机的芯片程序,建议楼主从头看起
worldy 2015-07-24
  • 打赏
  • 举报
回复
void EEPROM_Byte_Write(unsigned int address,unsigned char data)函数写EEPROM,其地址一般是在芯片设计时定义,每个地址是一个直接指定的数据,所以使用unsigned int address比较方便,在函数内要让编译器知道那是一个地址,因此需要使用强制转换

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧