搜索
bottom↓
回复: 9

请教下 STM8 唯一ID的问题

[复制链接]

出0入0汤圆

发表于 2016-9-2 16:46:47 | 显示全部楼层 |阅读模式
刚写了一个唯一ID的打印程序,发现有点点不对~ 整个ID对应关系左移了一位~
读ID的代码如下:
void Get_ChipID(void)
{
        ChipUniqueID[0] = *(__IO u16 *)(0X48CD);
        ChipUniqueID[1] = *(__IO u16 *)(0X48CE);
        ChipUniqueID[2] = *(__IO u16 *)(0X48CF);
    ChipUniqueID[3] = *(__IO u16 *)(0X48D0);
        ChipUniqueID[4] = *(__IO u16 *)(0X48D1);
        ChipUniqueID[5] = *(__IO u16 *)(0X48D2);
    ChipUniqueID[6] = *(__IO u16 *)(0X48D3);
        ChipUniqueID[7] = *(__IO u16 *)(0X48D4);
        ChipUniqueID[8] = *(__IO u16 *)(0X48D5);
    ChipUniqueID[9] = *(__IO u16 *)(0X48D6);
        ChipUniqueID[10] = *(__IO u16 *)(0X48D7);
        ChipUniqueID[11] = *(__IO u16 *)(0X48D8);
}

实际的芯片ID为:005F00420547333337313138
可是读出来的为:5F0042054733333731313800

另外,在FLASH里面0XFFF0~0XFFF3写了几个数据:11 22 33 44,按地址读出来变成了 22 33 44 00;  

不知道是读的函数出问题了,还是编译器出问题的~ IAR的V1.3.1版本,比较老~

出0入0汤圆

 楼主| 发表于 2016-9-2 16:51:05 | 显示全部楼层
相当于读取的地址被移了一位~

出0入93汤圆

发表于 2016-9-2 18:03:10 来自手机 | 显示全部楼层
首先请怀疑自己的问题,比如左边明明是u8类型右边怎么着都是u16你逗我呢

出0入0汤圆

发表于 2016-9-2 19:56:01 来自手机 | 显示全部楼层
takashiki 发表于 2016-9-2 18:03
首先请怀疑自己的问题,比如左边明明是u8类型右边怎么着都是u16你逗我呢

这样写没有问题,,,右边u16只不过是地址是16位的,再取该地址和数据

出0入93汤圆

发表于 2016-9-2 20:14:02 | 显示全部楼层
hongfadg 发表于 2016-9-2 19:56
这样写没有问题,,,右边u16只不过是地址是16位的,再取该地址和数据

没有问题?嗯,语法上是没有问题。
但是你有没有想过,16位数据内存排列是什么样的?STM8采用BIG ENDIAN,16位数据低地址是高字节,这个正好是需要的,结果被LZ舍弃了!LZ读到的是高地址,值为低字节,地址正好多了一字节。

出0入93汤圆

发表于 2016-9-2 20:19:21 | 显示全部楼层
hongfadg 发表于 2016-9-2 19:56
这样写没有问题,,,右边u16只不过是地址是16位的,再取该地址和数据

简单的说,就以LZ的这个程序为例子吧:
实际的芯片ID为:005F00420547333337313138
ChipUniqueID[0] = *(__IO u16 *)(0X48CD);
很显然,右边的值*(__IO u16 *)(0X48CD) = 0x005F,而*(__IO u8 *)(0X48CD) = 0x00,你说左边应该等于多少才对?
其他的每一句都是这样的。

出0入0汤圆

发表于 2016-9-2 22:32:35 来自手机 | 显示全部楼层
takashiki 发表于 2016-9-2 20:19
简单的说,就以LZ的这个程序为例子吧:
实际的芯片ID为:005F00420547333337313138
ChipUniqueID[0] = *( ...

明白人,顶你一个

出0入0汤圆

发表于 2016-9-3 08:48:58 | 显示全部楼层
takashiki 发表于 2016-9-2 20:19
简单的说,就以LZ的这个程序为例子吧:
实际的芯片ID为:005F00420547333337313138
ChipUniqueID[0] = *( ...

这么说来你是对了,是我搞错了,我以为是语法问题!不好意思!

出0入0汤圆

 楼主| 发表于 2016-9-6 16:25:18 | 显示全部楼层
takashiki 发表于 2016-9-2 18:03
首先请怀疑自己的问题,比如左边明明是u8类型右边怎么着都是u16你逗我呢

改成u8的是对的~  

都是看了风驰代码惹的祸~   自己没有思考下~   给你点赞~

出0入0汤圆

发表于 2016-9-7 10:37:05 | 显示全部楼层
STM8 唯一ID  mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-10 16:49

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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