stm32中的c语言问题。flash扇形擦除?

兄弟姐妹帮我问下,stm32中的c语言问题。flash扇形擦除??

有人知道这个怎么看吗?擦除高位为什么是右移,右移补救是低位吗
最新回答
绾青鸢

2024-11-23 11:25:54

因为SPI_Flash_SendByte()函数接收的参数是一个字节(8位),但扇区地址是32位,所以要把扇区地址拆分为高中低,分3次发送。
你红色框里面,先把地址&0xFF0000,再右移16位,就是把高位值移动到低位位置,这样才能把高位值发出去。
追问
我是这样想的。1是有效能发,0是无效。然后0xff0000左移16位,变成0x0000ff,高16位都变0无效了,低8位变1能发了,然后擦除的是低8位。。。
追答
假设SectorAddr = 0x00aabbcc;
你要把高位发出去,即把aa发出去,于是有:SectorAddr & 0xFF0000,此时,SectorAddr值为0x00aa0000,然后0x00aa0000 >> 16,得到0x000000aa,你看,aa就跑到低位的位置去了,然后就把这个aa值先发出去。
那个函数,只能接收一个字节,不能把高中低位同时发送,所以要分开发,先发高位,在发低位。