<wbr id="9qp22"><legend id="9qp22"><rt id="9qp22"></rt></legend></wbr>
<th id="9qp22"><noframes id="9qp22"><form id="9qp22"></form></noframes></th>

      <dd id="9qp22"><big id="9qp22"><video id="9qp22"></video></big></dd>
      <th id="9qp22"></th>
        <rp id="9qp22"><acronym id="9qp22"></acronym></rp>
        <dd id="9qp22"><pre id="9qp22"></pre></dd>

        1. <dd id="9qp22"><pre id="9qp22"></pre></dd>
          1. 打印

            [8/16位單片機] 【8月曬板卡】+ 如何開啟按鍵的中斷方式和啟用定時器?

            [復制鏈接]
            512|8
            跳轉到指定樓層
            樓主
            一、如何啟用按鍵的中斷方式?
                按鍵的中斷方式比輪詢方式更合理高效,我查看了pin_manager.h中對引腳的宏定義,發現可以通過代碼來定義中斷,但不知道中斷處理函數是哪個、在哪個位置?
                這是我寫的配置代碼,不知道正確否:
            1. int main(void)
            2. {
            3.     /* Initializes MCU, drivers and middleware */
            4.     SYSTEM_Initialize();
            5.    
            6.     /* 開啟按鍵中斷 */
            7.     IO_PF6_SetDigitalInput();                  //設置數字輸入方式
            8.     IO_PF6_EnableInterruptForLowLevelSensing();//啟用低電平感應中斷
            9.    

            10.     /* Replace with your application code */
            11.     while (1){
            12.         if(IO_PF6_GetValue()==0){
            13.             DELAY_milliseconds(50);
            14.             if(IO_PF6_GetValue()==0){
            15.                 if(direction==1){
            16.                     delays = delays << 1;
            17.                     if(delays > 1000){
            18.                         direction = 0;
            19.                         delays = 800;
            20.                     }
            21.                 }
            22.                 else{
            23.                     delays = delays >> 1;
            24.                     if(delays < 100){
            25.                         direction = 1;
            26.                         delays = 100;
            27.                     }
            28.                 }
            29.             }
            30.         }
            31.         IO_PF5_Toggle();
            32.         DELAY_milliseconds(delays);
            33.     }
            34. }
            復制代碼





            二、如何啟用定時器
                我想啟用定時器的功能來控制LED的閃爍,免得使用低效的延時程序,但不清楚如何配置和啟用定時器,在數據手冊里也沒有找到有關定時器的部分,在此請教大家該如何配置和啟用定時器。

            使用特權

            評論回復
            沙發
             樓主 | 2019-10-3 18:19 | 只看該作者
                在pin_manager.c文件中找到了中斷處理函數(見下圖),但定時器配置和啟用仍不知道。



            使用特權

            評論回復
            板凳
             樓主 | 2019-10-3 18:29 | 只看該作者
                按鍵中斷方式測試不成功,也許是還有哪里沒有設置好。主函數中的代碼如下:
            1. int main(void)
            2. {
            3.     /* Initializes MCU, drivers and middleware */
            4.     SYSTEM_Initialize();
            5.    
            6.     /* 開啟按鍵中斷 */
            7.     IO_PF6_SetDigitalInput();                  //設置數字輸入方式
            8.     IO_PF6_EnableInterruptForLowLevelSensing();//啟用低電平感應中斷
            9.    

            10.     /* Replace with your application code */
            11.     while (1){
            12.         if(keys>0){
            13. //        if(IO_PF6_GetValue()==0){
            14.             keyok = 1;                        //鎖定按鍵,此時不接收新按鍵
            15.             DELAY_milliseconds(50);           //延時防抖
            16.             if(IO_PF6_GetValue()==0){
            17.                 if(direction==1){
            18.                     delays = delays << 1;
            19.                     if(delays > 1000){
            20.                         direction = 0;
            21.                         delays = 800;
            22.                     }
            23.                 }
            24.                 else{
            25.                     delays = delays >> 1;
            26.                     if(delays < 100){
            27.                         direction = 1;
            28.                         delays = 100;
            29.                     }
            30.                 }
            31.             }
            32.             keyok = 0;                      //釋放按鍵鎖定
            33.         }
            34.         IO_PF5_Toggle();
            35.         DELAY_milliseconds(delays);
            36.     }
            37. }
            復制代碼




                中斷處理函數中的代碼如下:
            1. void PORTF_IO_PF6_DefaultInterruptHandler(void)
            2. {
            3.     // add your PORTF_IO_PF6 interrupt custom code
            4.     if(keyok==0)
            5.         keys++;
            6.     // or set custom function using PORTF_IO_PF6_SetInterruptHandler()
            7. }
            復制代碼


            使用特權

            評論回復
            地板
             樓主 | 2019-10-3 18:39 | 只看該作者
            我啟用下降沿中斷也沒反映。


                IO_PF6_SetDigitalInput();                  //設置數字輸入方式
            //    IO_PF6_EnableInterruptForLowLevelSensing();//啟用低電平感應中斷
                IO_PF6_EnableInterruptForFallingEdge();    //啟用下降沿中斷

            使用特權

            評論回復

            評論

            gjiang6789 2019-10-5 21:11 回復TA
            暈暈乎乎的 
            5
             樓主 | 2019-10-3 18:40 | 只看該作者
            啟用雙邊緣中斷也無反映。

                /* 開啟按鍵中斷 */
            //    PORTF_IO_PF6_SetInterruptHandler();        //此函數的參數未知
                IO_PF6_SetDigitalInput();                  //設置數字輸入方式
            //    IO_PF6_EnableInterruptForLowLevelSensing();//啟用低電平感應中斷
            //    IO_PF6_EnableInterruptForFallingEdge();    //啟用下降沿中斷
                IO_PF6_EnableInterruptForBothEdges();      //啟用雙邊緣中斷

            使用特權

            評論回復
            6
            | 2019-10-4 12:01 | 只看該作者
            放到月月送討論區了

            使用特權

            評論回復
            7
            | 2019-10-5 12:03 | 只看該作者
            為何我自己寫的延時函數看不到效果

            使用特權

            評論回復
            8
             樓主 | 2019-10-5 18:29 | 只看該作者
            zhuomuniao110 發表于 2019-10-5 12:03
            為何我自己寫的延時函數看不到效果

            我的也是,三重循環,分別循環20000次都看不到延時效果,與沒有延時一樣。

            使用特權

            評論回復
            掃描二維碼,隨時隨地手機跟帖
            您需要登錄后才可以回帖 登錄 | 注冊

            本版積分規則

            我要發帖 投訴建議 創建版塊 申請版主

            快速回復

            您需要登錄后才可以回帖
            登錄 | 注冊
            高級模式

            論壇熱帖

            在線客服 快速回復 返回頂部 返回列表
            成人短片线上看