欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2823|回復: 2
收起左側

大佬們號,我想問一下STM32這個流水燈按鍵按多次怎么切換狀態

[復制鏈接]
ID:783669 發表于 2020-6-19 10:16 | 顯示全部樓層 |閱讀模式
最近新學,
我主要是想通過按鍵控制流水燈能夠循環從左到右亮切換成循環從右到左亮,
按下之后能切換狀態,再按一下能切換成原來的狀態,就是按下能夠不斷切換狀態。
我的主函數如下,循環里面LEFT_INIT()是從左到右亮的函數:
int main(void)
{
        NVIC_Configuration();
        EXTI_INIT();
        LED_INIT();
        while(1){
        LEFT_INIT();
  }       
}


然后給按鍵弄的中斷處理如下, RIGHT_INIT是從右到左亮的函數:
        void EXTI0_IRQHandler(void)
        {
                while(1){
                if(EXTI_GetITStatus(EXTI_Line0)!=RESET)
                {
               
               RIGHT_INIT();
               
          }
                EXTI_ClearITPendingBit(EXTI_Line0);
        }
        }


我一直搞不懂的地方就是進入中斷處理之后按下按鈕再切回原來的狀態,
查了一下說是用EXTI_ClearITPendingBit(EXTI_Line0)把中斷清零,
但我加進去就切不回原來循環從左到右亮的狀態,
就一直做不到切換狀態的目標,
就想請教一下這怎么解決,謝謝大佬。



回復

使用道具 舉報

無效樓層,該帖已經被刪除
ID:733205 發表于 2020-7-21 15:31 | 顯示全部樓層
在中斷里面做循環?那你的其他東西都不用跑了,你這個只要進了中斷就再也出不來了
回復

使用道具 舉報

ID:192650 發表于 2020-7-21 16:14 | 顯示全部樓層
int change = 0;
int main(void){
        NVIC_Configuration();
        EXTI_INIT();
        LED_INIT();
        while(1){
               
                   switch(change){
                        case 0:
                               LEFT_INIT();
                               break;
                        case 1:
                                RIGHT_INIT();
                                break;
                        default: break;           
                        }
                       
                }        
}
void EXTI0_IRQHandler(void){
    if(EXTI_GetITStatus(EXTI_Line0)!=RESET){
               
        change = !change;      

        EXTI_ClearITPendingBit(EXTI_Line0);
    }
}
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表