f1iceman 发表于 2012-4-7 15:42:20

STM8S105的flash读写问题

本人使用该型号单片机,写了一段基本的FLASH读写程序,把一个数组的值写入flash,然后再进行读取,通过串口发送到计算机显示出来,用以检测是否正确写入。但收不到任何内容。程序如下,求高手看看哪里出了问题。或者给小弟一个最基本的flash例程。
 
 #include
 
u8 a@0x200;
u8 i,p=0;
u8 c;
u32 add,start_add,stop_add;
u16 block;
 
typedef enum { FAILED = 0, PASSED = !FAILED} TestStatus;
TestStatus OperationStatus;
FLASH_Status_TypeDef Status;
u16 timeout = 0x1000;
 
 
void UART2_Init(void)
{
        UART2_CR2=0;   //禁止发送和接收
        UART2_CR1=0;   //UART使能,M=0,8个数据位,禁止奇偶校验,
        UART2_CR3=0;   //LIN MODE 禁止,1个停止位,禁止SLK
       
        UART2_BRR2=0x00;      //波特率设置,9600,fmaster=2M=fhsi(16M)/8
        UART2_BRR1=0x0d;        //主意设置先BRR2,后BRR1
        UART2_CR2=0x2c;   //接收中断使能,发送使能,接收使能
}
 
void UART2_Send(unsigned char ch)
{
        while((UART2_SR&0x80)==0x00);
        UART2_DR=ch;
}
main()
{
        UART2_Init();
       
        FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD);
        FLASH_Unlock(FLASH_MEMTYPE_PROG);
       
        for(i=0;i

f1iceman 发表于 2012-4-7 16:43:43

RE:STM8S105的flash读写问题

怎么没有人回答啊?希望高手能来帮帮忙,看看问题出在哪?已经卡了好几天了,不知道哪错了

ling2010 发表于 2012-5-3 22:33:42

回复:STM8S105的flash读写问题

可参考风驰iCreate的例程http://stm32.eefocus.com/bbs/article_394_309567.html

jack-352831 发表于 2012-5-7 23:01:55

RE:STM8S105的flash读写问题

我认为你的问题出在块编程上面 , 对于flash的块编程应该从RAM中操作而不是 在FLASH中对FLASH读写 ,对FLASH的 块操作要拷贝到RAM 中才能成功

jack-352831 发表于 2012-5-7 23:02:43

RE:STM8S105的flash读写问题

我认为你的问题出在块编程上面 , 对于flash的块编程应该从RAM中操作而不是 在FLASH中对FLASH读写 ,对FLASH的 块操作要拷贝到RAM 中才能成功

BobLiang 发表于 2016-11-18 23:03:23

问题解决了吗?
我在STM8S208C8也是一样,写入后再读出来是正确的,先按块擦除,擦除的时候检查EOP事件的,没有发现问题。接下来在按块编程写入地址为0xBC00,长度为128个字节。写入的时候也检查了EOP事件,同样没有问题(发现有EOP事件的)。退出写函数后再读出结果正确。
可是问题是:当我把擦除函数和写入函数都注释掉不用了,只保留原来读出内容的函数,编译后下载运行却发现读出的内容,128个字节全是0。当然掉电也是一样读不出来写入的值。

到底是写入问题还是读出问题?写入的时候用库函数FLASH_WaitForLastOperation检查返回值为0x02(是正确的)。

BobLiang 发表于 2016-11-18 23:09:08

官方提供的例程都是片内EEPROM操作,没有片内的flash操作的例程(目前还没有找到),狗日的

BobLiang 发表于 2016-11-19 12:00:54

问题已经搞定了。不是读也不是写的问题,是测试方法的问题。
原来我注释掉擦除和写函数后,需要重新编译代码,重新编译代码后必然需要通过stlink来下载到板子上,就在下载的时候把我上次写入的内容擦除了,再读当然只是空的了。
页: [1]
查看完整版本: STM8S105的flash读写问题