你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 1582|回复: 5

初学STM8的问题

[复制链接]

1

主题

7

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-7-1 22:39:16 | 显示全部楼层 |阅读模式
 
 
小弟初学STM8,用查询法来检查K2(PD.7)按下否,如果按下,则LED2(PE.3)亮,再按下,LED2灭,但是烧录后,程序好像走到while(!bit_status2)后程序停住了,按下按键,灯亮,再按下,灯还是亮,无法灭。
按键函数如下,主程序只是调用这个函数,是哪里出了问题呢?真心求解。
 
void anjian_K2(void)  //K2按下,LED2取反
{
    BitStatus bit_status2;
    bit_status2= GPIO_ReadInputPin(GPIOE, GPIO_PIN_3);
    if (!bit_status2 )  //SET or RESET
    {
       delay_ms(2000);
       if (!bit_status2)
       {
         
         GPIO_WriteReverse(GPIOD, GPIO_PIN_0);    //LED2取反
         while(!bit_status2);
       }
      
      
    }
回复

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2014-7-2 15:19:39 | 显示全部楼层

RE:初学STM8的问题

bit_status2=0
那么if (!bit_status2 )=if(1)
while(!bit_status2)=while(1)
这个时候你应该在while()里面对bit_status2进行操作,不然他永远死到里面了。
回复 支持 反对

使用道具 举报

1

主题

7

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2014-7-2 17:14:28 | 显示全部楼层

回复:初学STM8的问题

感谢楼上,但是我的按键是对地有效,常态是上拉到电源的,平常bit_status2是高电平,但按下按键时,变为低电平。PE.3我也设置的是输入啊,怎么回事?
回复 支持 反对

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2014-7-3 14:55:04 | 显示全部楼层

RE:初学STM8的问题

按下以后,bit_status2=0了。所以出不来了。
回复 支持 反对

使用道具 举报

1

主题

7

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2014-7-3 17:59:44 | 显示全部楼层

回复:初学STM8的问题

while(!bit_status2)是用来判断按键松开没,如果没松开,程序就死在这,如果松开,按理bit_status2应该为1了,程序应往下走才对呀。
我又试了一下,把while(!bit_status2)改成
while(!GPIO_ReadInputPin(GPIOE, GPIO_PIN_3)),程序就可以了。怪事!
回复 支持 反对

使用道具 举报

1

主题

7

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2014-7-3 18:07:48 | 显示全部楼层

回复:初学STM8的问题

是不是 BitStatus有什么特殊定义?
回复 支持 反对

使用道具 举报

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版