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

查看: 1593|回复: 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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版