本人使用该型号单片机,写了一段基本的FLASH读写程序,把一个数组的值写入flash,然后再进行读取,通过串口发送到计算机显示出来,用以检测是否正确写入。但收不到任何内容。程序如下,求高手看看哪里出了问题。或者给小弟一个最基本的flash例程。 #include u8 a[FLASH_BLOCK_SIZE]@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 |
从零开始操作STM8寄存器(风驰iCreate奉献)
【中文资料】初学STM8库函数的中文帮助软件
绝对经典的中文STM8学习手册,淘宝上学习板资料,友情大放送!
【原创教程】风驰iCreate独家开源STM8 27个例程和10多万字的pdf教程
STM8的LCD1602 4线驱动,为什么不工作
【精华资料】由零开始开发STM8
STM8S 的触摸库是如何在主程序中查询键的呢、
【精华资料】STM8的C语言编程1-14讲完整版
【精品教程】STM8系列单片机入门教程系列
STM8 第一次进中断不准【悬赏问答】
RE:STM8S105的flash读写问题
回复:STM8S105的flash读写问题
RE:STM8S105的flash读写问题
RE:STM8S105的flash读写问题
我在STM8S208C8也是一样,写入后再读出来是正确的,先按块擦除,擦除的时候检查EOP事件的,没有发现问题。接下来在按块编程写入地址为0xBC00,长度为128个字节。写入的时候也检查了EOP事件,同样没有问题(发现有EOP事件的)。退出写函数后再读出结果正确。
可是问题是:当我把擦除函数和写入函数都注释掉不用了,只保留原来读出内容的函数,编译后下载运行却发现读出的内容,128个字节全是0。当然掉电也是一样读不出来写入的值。
到底是写入问题还是读出问题?写入的时候用库函数FLASH_WaitForLastOperation检查返回值为0x02(是正确的)。
原来我注释掉擦除和写函数后,需要重新编译代码,重新编译代码后必然需要通过stlink来下载到板子上,就在下载的时候把我上次写入的内容擦除了,再读当然只是空的了。