|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
坚鸿-深圳:
刚才在用stm8s105单片机时,发现了stm8固件库的一个漏洞,害得我找了半天才发现。GPIO_ReadInputPin读低电平时是0,但是读取高电平时不是1!而是1和0以外的数!
所以在程序里判断高电平时,应该用if(GPIO_ReadInputPin(GPIOC,GPIO_PIN_1)!=0),绝对不能用if(GPIO_ReadInputPin(GPIOC,GPIO_PIN_1)==1) .比如我以下放在定时中断的按键扫描程序一开始不行:
- if(GPIO_ReadInputPin(GPIOC,GPIO_PIN_1)==1)
- {
- SucKeyLock1=0;
- SuiKeyTimeCnt1=0;
- }
- else if(0==SucKeyLock1)
- {
- SuiKeyTimeCnt1++;
- if(SuiKeyTimeCnt1>const_key_time1)
- {
- SuiKeyTimeCnt1=0;
- SucKeyLock1=1;
- GucKeySec=1;
- }
- }
复制代码
改成如下程序后就正常了:
- if(GPIO_ReadInputPin(GPIOC,GPIO_PIN_1)!=0)
- {
- SucKeyLock1=0;
- SuiKeyTimeCnt1=0;
- }
- else if(0==SucKeyLock1)
- {
- SuiKeyTimeCnt1++;
- if(SuiKeyTimeCnt1>const_key_time1)
- {
- SuiKeyTimeCnt1=0;
- SucKeyLock1=1;
- GucKeySec=1;
- }
- }
复制代码
|
|