OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3348|回复: 4

SPI实验的问题

[复制链接]

18

主题

94

帖子

0

精华

高级会员

Rank: 4

积分
571
金钱
571
注册时间
2016-5-30
在线时间
87 小时
发表于 2017-1-15 18:48:59 | 显示全部楼层 |阅读模式
1金钱
想请教关于SPI实验的一个问题,就是void SPI_Flash_Write(u8* pBuffer,u32 WriteAddr,u16 NumByteToWrite)

  .....
                  else                                                                                                                    
                {
                          secpos++;                                                                                       
                          secoff=0;                                                                                       

                           pBuffer+=secremain;                                                                
                          WriteAddr+=secremain;                                                       
                           NumByteToWrite-=secremain;                                               
                          if(NumByteToWrite>4096)                                                                       
                                         secremain=4096;          
                          else                                                                                                                                                
                                         secremain=NumByteToWrite;                                          
                }       



其中的pBuffer+=secremain;         这句不解 pBuffer它本来就是指向 “const u8 TEXT_Buffer[]={"WarShipSTM32 SPI TEST"}; ”这个数组,为什么要偏移?
很不解 求解答一下,感激!

最佳答案

查看完整内容[请看2#楼]

前面好像还有一堆代码吧,前面执行下来把原来那个扇区里剩下可以写的地方都占满了,也就是写了secremain个字符,剩下的的还没写的要到下一个新的扇区去写,所以指针要向下偏原来secremain个字节才对呀,然后在判断剩下的字节有没有多余4096个要不要成扇区的写,如果没有多于4096个也就是在新的扇区就够写了,总体看来整个函数就是做到不浪费吧
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

18

主题

75

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2016-12-24
在线时间
29 小时
发表于 2017-1-15 18:49:00 | 显示全部楼层
前面好像还有一堆代码吧,前面执行下来把原来那个扇区里剩下可以写的地方都占满了,也就是写了secremain个字符,剩下的的还没写的要到下一个新的扇区去写,所以指针要向下偏原来secremain个字节才对呀,然后在判断剩下的字节有没有多余4096个要不要成扇区的写,如果没有多于4096个也就是在新的扇区就够写了,总体看来整个函数就是做到不浪费吧
回复

使用道具 举报

18

主题

94

帖子

0

精华

高级会员

Rank: 4

积分
571
金钱
571
注册时间
2016-5-30
在线时间
87 小时
 楼主| 发表于 2017-1-17 15:51:51 | 显示全部楼层
zhu83453958 发表于 2017-1-15 20:06
前面好像还有一堆代码吧,前面执行下来把原来那个扇区里剩下可以写的地方都占满了,也就是写了secremain个 ...

但是下面那行WriteAddr+=secremain; 说明写地址已经是偏移了, pBuffer只管待写入数组。
回复

使用道具 举报

18

主题

94

帖子

0

精华

高级会员

Rank: 4

积分
571
金钱
571
注册时间
2016-5-30
在线时间
87 小时
 楼主| 发表于 2017-1-19 09:35:22 | 显示全部楼层
zhu83453958 发表于 2017-1-15 18:49
前面好像还有一堆代码吧,前面执行下来把原来那个扇区里剩下可以写的地方都占满了,也就是写了secremain个 ...

原子的意思是不是如果判断出那个扇区是写不完那就不在那个扇区写了,直接移到下一个扇区写??
回复

使用道具 举报

18

主题

94

帖子

0

精华

高级会员

Rank: 4

积分
571
金钱
571
注册时间
2016-5-30
在线时间
87 小时
 楼主| 发表于 2017-1-19 09:40:17 | 显示全部楼层
zhu83453958 发表于 2017-1-15 18:49
前面好像还有一堆代码吧,前面执行下来把原来那个扇区里剩下可以写的地方都占满了,也就是写了secremain个 ...

懂了  感谢
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 04:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表