打印

stm8s写eeprom请教

[复制链接]
6597|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tantao820629|  楼主 | 2009-4-18 19:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1》  在使用STM8S105K6这颗芯片内部eeprom的时候,为什么两次输入密码后还是不让写??(用仿真器看PUL标记没有置1) ??内部EEPROM和FLASH怎样才能正确操作??高手请赐教???




2》  STM8S105K6这颗芯片只有一个AD模块,即(adc1),而且资料上也说的很清楚有AD缓存,但在用的时候使用ADC1缓存时编译器报错,提示缓存变量没有声明,我打开头文件确实也看到里面没有声明有关ADC1有关缓存寄存器的一些定义!请教:是我的头文件有问题还是资料有问题呢??C编译器是4.1.1版本的!
沙发
tantao820629|  楼主 | 2009-4-18 19:18 | 只看该作者

stm8s写eeprom请教

补充一点!我用的是ST_LINK仿真器!

使用特权

评论回复
板凳
zhaoxinzxzx| | 2009-4-18 21:01 | 只看该作者

楼主能不能贴一下代码?

另外升级一下Fwlib(V1.10)和comic编译器(v4.2.8)

使用特权

评论回复
地板
tantao820629|  楼主 | 2009-4-19 16:21 | 只看该作者

stm8s写eeprom请教

关于AD是我的C编译器没有装补丁,装上就可以用了!多谢赐教!

关于EEPROM写不数据我还是没弄明白!
我的意图是这样的!现在EEPROM区域定义一个1K字节的数组
 uchar data[1024] @ 0x4000 ;
然后在上电的时候往里面写其中一个数据在主循环读写进的数据;如果写进数据是对的,点亮LED
操作如下:
void main (void)
{
  ......
  .....
  FLASH_DUK = 0x56; 
  FLASH_DUK = 0xAE; 
  data[1024]= 100;
 while(1) 
  {
     if(data[1024] == 100)  LED = 1;点亮LED
        ...
   }
}
  结果LED就是不亮。仿真的时候也没见DULB标志置上!
  是我那里没有初始化到的???还是哪理解错了!如果理解错了我改怎么写??请指点!!!先谢谢了!!

使用特权

评论回复
5
tantao820629|  楼主 | 2009-4-20 08:05 | 只看该作者

stm8s写eeprom请教

上面敲错了!
 应该是 if(data[1023] == 100)  LED = 1;点亮LED

使用特权

评论回复
6
tantao820629|  楼主 | 2009-4-20 11:03 | 只看该作者

stm8s写eeprom请教

弄明白了!中文手册翻译的是错的!ST的手册写的真是不怎么的!

使用特权

评论回复
7
zhaoxinzxzx| | 2009-4-20 11:09 | 只看该作者

顺序反了

写FLASH_DUKR寄存器的顺序反了,另外写数据之后要判断是否写完,如果在烧写EEPROM的过程中程序对EEPROM有操作就会把CPU停掉,包括中断在内都不会响应。

void main (void)
{
  ......
  .....
  FLASH_DUK = 0xAE; 
  FLASH_DUK = 0x56; 

  data[1024]= 100;
  while(FLASH_IAPSR & 0x04);

while(1) 
  {
     if(data[1023] == 100)  LED = 1;点亮LED
        ...
   }
}

使用特权

评论回复
8
zhaoxinzxzx| | 2009-4-20 12:41 | 只看该作者

while(FLASH_IAPSR & 0x04); /* 这句错了 */

应该是

  while(!(FLASH_IAPSR & 0x04));

使用特权

评论回复
9
tantao820629|  楼主 | 2009-4-20 23:24 | 只看该作者

stm8s写eeprom请教

问题已经解决了,手册翻译错误,幸亏我对了一下英文资料,很简单一个问题就因为顺序颠倒浪费我两天时间,总算解决了,不过谢谢楼上的热心讲解,对你表示敬意!谢谢!!!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

89

帖子

0

粉丝