[STM8] 为何cosmic不编译某些行?

[复制链接]
 楼主| 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聪明很多
 楼主| 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
IJK 发表于 2012-11-12 11:59 | 显示全部楼层
LZ的要求其实容易实现,就是加 volatile,比如:

volatile char CurrentButtonState1, CurrentButtonState;
 楼主| de101 发表于 2012-11-12 14:27 | 显示全部楼层
加 volatile之后,后三行可以了,
但comsic又不编译这一行 CurrentButtonState1 = (u8)(GPIO_ReadInputData(GPIOC) & 0x02);
 楼主| de101 发表于 2012-11-12 15:00 | 显示全部楼层
谢谢 吾要单片机,IJK,
你们的分析都是对的,另一原因是GPIOC1内部无上拉电阻,我没注意到
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

21

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部