打印
[STM8]

为何cosmic不编译某些行?

[复制链接]
1720|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
de101|  楼主 | 2012-11-10 15:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
GPIO_Init(GPIOC, GPIO_Pin_1, GPIO_Mode_In_PU_No_IT);
Delay(20);
    CurrentButtonState1 = (u8)(GPIO_ReadInputData(GPIOC) & 0x02);
    CurrentButtonState = 0x10;     这行开始连续三行不编译?
沙发
de101|  楼主 | 2012-11-10 15:40 | 只看该作者
step into (F11),三行跳过去。
run to cursor,提示contains no code

使用特权

评论回复
板凳
吾要单片机| | 2012-11-10 22:52 | 只看该作者
我也看到这种境况,实际上不是cosmic的错,而是cosmic太聪明了,因为你的那三行C代码的左变量是自动变量名只是起中间过渡而已,实际的结果cosmic已经帮你算好了,所以省略了

使用特权

评论回复
地板
吾要单片机| | 2012-11-10 22:54 | 只看该作者
我发现cosmic  FOR STM8比KEIL C51聪明很多

使用特权

评论回复
5
de101|  楼主 | 2012-11-12 11:37 | 只看该作者
有没有那个设置取消cosmic这个功能,因为我要检测Gpio电平,
第1行为上拉,是否它认为 CurrentButtonState1 = 0x20。然后省略了下面三行

    CurrentButtonState1 = (u8)(GPIO_ReadInputData(GPIOC) & 0x02);        //pull-up
      CurrentButtonState = 0x10;        //down
      if(CurrentButtonState1 == 0x02)   
            { CurrentButtonState = 0; }         //up

使用特权

评论回复
6
IJK| | 2012-11-12 11:59 | 只看该作者
LZ的要求其实容易实现,就是加 volatile,比如:

volatile char CurrentButtonState1, CurrentButtonState;

使用特权

评论回复
7
de101|  楼主 | 2012-11-12 14:27 | 只看该作者
加 volatile之后,后三行可以了,
但comsic又不编译这一行 CurrentButtonState1 = (u8)(GPIO_ReadInputData(GPIOC) & 0x02);

使用特权

评论回复
8
de101|  楼主 | 2012-11-12 15:00 | 只看该作者
谢谢 吾要单片机,IJK,
你们的分析都是对的,另一原因是GPIOC1内部无上拉电阻,我没注意到

使用特权

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

本版积分规则

5

主题

21

帖子

0

粉丝