打印
[STM8]

IAR和STVD编译最变态的问题,寻找高手,高手中的高手

[复制链接]
6731|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
samchan1008|  楼主 | 2013-3-19 17:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 samchan1008 于 2013-3-19 17:24 编辑

寻找高手,高手中的高手。超变态的问题
最近碰到一个问题,超奇怪超变态的,希望高手能给出解答。
我移植了一个程序,大小〉90K,使用的MCU是STM8S207RB
在里面我需要驱动一个屏驱动IC,T113。
大概的说,T113要做的东西有 屏参写入,图像通道选择,图像与字符显示==
图像和字符显示是分2部分做的,一部分是先将要显示的东西以数组的形式表现出来,然后用IIC写进去
一部分是在使用的时候,再往T113里面写数据,激活要显示的东西
之前是使用的松下的MCU,功能已经实现。
现在改用STM8S207RB,在IAR上面编译通过,功能也已经实现。
由于某种原因,我不能使用IAR编译器,现在改用STVD4.2.4+COSMIC。也编译通过
换了编译器,程序是没换的,一个字母都没改过


一个字母都没改过

问题来了:

所有功能全部实现,除了T113的部分功能
T113的屏参写入,正确,通道选择,正确,显示字符和图像,错误,显示不出来
T113分载入数据和驱动显示2部分,如果载入错误,驱动显示正确,则屏显示会花一块
初步估计是载入没问题(监视过),驱动显示部分有问题
我使用串口打印去监视T113的IIC数据,发现IAR和STVD发送的数据是一样的

重申一次:在IAR上是没问题的,STVD上有问题,程序连标点符号都一样,无任何改动
请高手指点
沙发
samchan1008|  楼主 | 2013-3-19 17:17 | 只看该作者
没办法,自己先顶一下。
程序十分的大,在这里放一部分上去吧,让大家看看
V 字符的定义
const unsigned char   font_V[] =
{
0x7C,0x1F,0x18,0x04,0x18,0x04,0x18,0x04,0x18,0x08,0x0C,0x08,0x0C,0x08,0x0C,0x08,0x0C,0x08,0x06,0x10,0x06,0x10,0x06,0x10,
0x06,0x10,0x03,0x20,0x03,0x20,0x03,0x20,0x03,0x20,0x03,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0x80,0x00,0x80,
};/*"V"*/

显示函数:
void ShowVolValue(void)
{
        BYTE val = 0;
        const S_EXT_ADJ_INFO *ptr = GetOsdShowGeneralExtAdjInfo();
        if(ptr->vol == 0)
        {
                if(currentFormKeyAttr != 0)
                {
                        ShowCurrentAreaWithAttr(BLANK,0);                                
                }
                return;
        }
        val = *(ptr->value);
        currentFormKeyAttr = 1;
        OsdShowArea((ptr->strTab)[val],currentFormKey->area);
}

const S_EXT_ADJ_INFO *GetOsdShowGeneralExtAdjInfo(void)
{
        BYTE i;
        for(i = 0;generalExtAdjInfo.adjustInfo != 0; i++)
        {
                if(systemAdjuctState == generalExtAdjInfo.adjustInfo)
                {
                        #ifdef ENABLE_BT
                        if(enterTelFlag)
                        {
                                return(&telExtAdjInfo);
                        }
                        return(&generalExtAdjInfo);
                        #else
                        return(&generalExtAdjInfo);
                        #endif
                }
        }
        return(&generalExtAdjInfo[sizeof(generalExtAdjInfo)/sizeof(S_EXT_ADJ_INFO)-1]);
}
结构指针:
typedef struct
{
        BYTE adjustInfo;
        BYTE *value;//don't NULL
        BOOL vol;
        BYTE maxValue;
        const BYTE *str;//don't NULL
        const BYTE *str1;                        //don't NULL
        const BYTE *str2;                        //don't NULL        
        const BYTE *const *strTab;//don't NULL
        VOID_FUNCT_PTR fPtr;
}S_EXT_ADJ_INFO;

使用特权

评论回复
板凳
王紫豪| | 2013-3-19 17:18 | 只看该作者
这个不好说,表面上看没问题,并不代表程序真的没问题。只是有的编译器更健壮罢了;所以只能 debug,一点点的排除。

使用特权

评论回复
地板
samchan1008|  楼主 | 2013-3-19 17:22 | 只看该作者
奇怪的就是:
监视到IIC发送数据的时候,IIC函数里面的参数都是正确的。就是不明白为什么没有显示出东西来
写入的数据有  显示的位置,显示的颜色,显示的内容,在数据指针里面已经包含进去了
如果说IIC是错误的,觉得可能性不大,因为前面的屏参,图像通道都是通过IIC写的,也是同一个器件,都对了

使用特权

评论回复
5
samchan1008|  楼主 | 2013-3-19 17:23 | 只看该作者
寻找高手,高手中的高手。超变态的问题

使用特权

评论回复
6
samchan1008|  楼主 | 2013-3-19 17:26 | 只看该作者
本帖最后由 samchan1008 于 2013-3-19 18:00 编辑

高手在哪里……………………
高手高手高高手,出来看一下



555555555555555555555555……………………
我自己居然搞定了,难道我也是所谓的高手
坑爹啊,我查了5天半,5天半啊
遭受了无数的白眼,冷嘲热讽…………
终于搞定了。找个没人的地方大吃一顿,大哭一场先。
坑爹的COSMIC+STVD啊,你们可以安息了,垃圾东西
坑爹的ST技术支持啊,你们可以去死了,整天牛B哄哄的,没有你们我一样搞定
所有的问题问了你们都没有结果,都是我自己搞定的
芯片做得再好有个屁用,技术支持垃圾到了极点,有和没有是一样的

使用特权

评论回复
7
金融小数| | 2013-3-19 17:58 | 只看该作者
你使用的是软件I2C还是硬件I2C?

使用特权

评论回复
8
bobo5650| | 2013-3-19 18:27 | 只看该作者
求人不如求己,这是真理

使用特权

评论回复
9
金融小数| | 2013-3-19 20:23 | 只看该作者
COSMIC的确有问题

使用特权

评论回复
10
hawksabre| | 2013-3-19 20:30 | 只看该作者
呵呵  楼主的精神值得赞赏  兄弟  顶你一个  呵呵  继续努力

使用特权

评论回复
11
ymind| | 2013-3-20 08:45 | 只看该作者
sizeof(generalExtAdjInfo)/sizeof(S_EXT_ADJ_INFO)
两个sizeof是疑问手,COSMIC可能不严谨,对结构S_EXT_ADJ_INFO的处理。因为对这个结构的大小做对齐处理不同编译器有不同理解,且其内部字段大小还有混着排列(即byte, pointer交替出现,是不好的结构设计)。

使用特权

评论回复
12
elec921| | 2013-3-20 12:51 | 只看该作者
看来是彻底伤了LZ的心了。LZ不妨把解决过程贴上来分享

使用特权

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

本版积分规则

1

主题

5

帖子

0

粉丝