久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1786|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)口袋實(shí)驗(yàn)板中斷控制程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:306209 發(fā)表于 2018-4-11 21:40 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
//*****************************************************************************
// 本程序控制口袋實(shí)驗(yàn)板上的3個(gè)LED指示燈,移位閃爍點(diǎn)亮,K2、K3、K4為中斷按鍵,分別控制紅燈、藍(lán)燈、綠燈的翻轉(zhuǎn)
// 藍(lán)色LED(D2)--PF0 綠色LED(D3)-PA4 紅色LED(D4)-PD6
//*****************************************************************************
#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"//一些位帶操作的宏定義
#include "inc/hw_gpio.h"// hw_gpio.h - Defines and Macros for GPIO hardware.
#include "driverlib/sysctl.h"//系統(tǒng)時(shí)鐘
#include "driverlib/gpio.h"//gpio 定義
#include "driverlib/gpio.c"//gpio 定義
#include "driverlib/interrupt.c"//gpio 定義
#include "driverlib/interrupt.h"
#include <math.h>
#include "inc/hw_ints.h"
#include "inc/hw_nvic.h"


void GPIO_PORTA_ISR(void)//中斷處理子函數(shù)
{
    unsigned char ucVal;
    unsigned long ulStatus;//中斷狀態(tài)標(biāo)識
        
    ulStatus = GPIOIntStatus(GPIO_PORTA_BASE, true); // 讀取中斷狀態(tài)
    GPIOIntClear(GPIO_PORTA_BASE, ulStatus); // 清除中斷狀態(tài),重要
        
    switch (ulStatus ) // 如果KEY的中斷狀態(tài)有效
    {
             case 0x04:
                      ucVal = GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_0); // 翻轉(zhuǎn)LED(藍(lán))
          GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0, ~ucVal);
          SysCtlDelay(10000000); // 延時(shí)約10ms,消除按鍵抖動
          while (GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_2) == 0x00); // 等待KEY抬起
          SysCtlDelay(10000000); // 延時(shí)約10ms,消除松鍵抖動
                            break;
                         case 0x08:
                                 ucVal = GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_4); // 翻轉(zhuǎn)LED(綠)
          GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4, ~ucVal);
          SysCtlDelay(10000000); // 延時(shí)約10ms,消除按鍵抖動
          while (GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_3) == 0x00); // 等待KEY抬起
          SysCtlDelay(10000000); // 延時(shí)約10ms,消除松鍵抖動
                         break;

                        
                                 
    }
}



void GPIO_PORTF_ISR(void)//中斷處理子函數(shù)
{
    unsigned char ucVal;
    unsigned long ulStatus;//中斷狀態(tài)標(biāo)識
        
    ulStatus = GPIOIntStatus(GPIO_PORTF_BASE, true); // 讀取中斷狀態(tài)
    GPIOIntClear(GPIO_PORTF_BASE, ulStatus); // 清除中斷狀態(tài),重要
        
    switch (ulStatus ) // 如果KEY的中斷狀態(tài)有效
    {
             case 0x10:
                      ucVal = GPIOPinRead(GPIO_PORTD_BASE, GPIO_PIN_6); // 翻轉(zhuǎn)LED(紅)
          GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_6, ~ucVal);
          SysCtlDelay(10000000); // 延時(shí)約10ms,消除按鍵抖動
          while (GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_4) == 0x00); // 等待KEY抬起
          SysCtlDelay(10000000); // 延時(shí)約10ms,消除松鍵抖動
                            break;
                        
                                 
    }
}


//*****************************************************************************
// main 函數(shù),每個(gè)工程項(xiàng)目內(nèi)有且只有1個(gè)
//*****************************************************************************
int main(void)
{


        //設(shè)置系統(tǒng)時(shí)鐘為50MHz
    SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
                       SYSCTL_XTAL_16MHZ);
    // 端口GPIO F使能
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);          // 使能 GPIO F模塊
          HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = GPIO_LOCK_KEY; // 開鎖 PORT F
    HWREG(GPIO_PORTF_BASE + GPIO_O_CR) |= GPIO_PIN_0;     // 解鎖 F0 引腳
    HWREG(GPIO_PORTF_BASE + GPIO_O_LOCK) = 0;             // 重新上鎖
        
        
          SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);   //使能GPIO A模塊
          SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);  //使能GPIO D模塊
    GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_0); // PF0設(shè)置為輸出
          GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_4); // PA4設(shè)置為輸出
          GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_6); // PD6設(shè)置為輸出
        
        
        //初始化三個(gè)燈的狀態(tài)
         GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,1<<0);//藍(lán)燈滅
        SysCtlDelay(10000000);
          GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_4,1<<4);//綠燈滅
                SysCtlDelay(10000000);
          GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_6,1<<6);//紅燈滅
                SysCtlDelay(10000000);

        
          GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,0<<0);//藍(lán)燈亮
          SysCtlDelay(10000000);
    GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,1<<0);  // 藍(lán)燈滅
    SysCtlDelay(10000000);
                GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,0<<4); //綠燈亮
          SysCtlDelay(10000000);
    GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4,1<<4);  // 口袋板綠燈滅
    SysCtlDelay(10000000);
          GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_6,0<<6);  //口袋板紅燈亮
          SysCtlDelay(10000000);
    GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_6,1<<6);  //口袋板紅燈滅
               
               
               
               
               
          //中斷初始化
          GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_2); // PA2(K4)設(shè)置為輸入
                GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_3); // PA3(K3)設(shè)置為輸入
                GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_4); // PF4(K2)設(shè)置為輸入
          GPIOIntTypeSet(GPIO_PORTA_BASE, GPIO_PIN_2, GPIO_LOW_LEVEL);//設(shè)置GPIOPA2中斷
                GPIOIntTypeSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_LOW_LEVEL);//設(shè)置GPIOPA3中斷
                GPIOIntTypeSet(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_LOW_LEVEL);//設(shè)置GPIOPF4中斷
                GPIOIntEnable(GPIO_PORTA_BASE, GPIO_PIN_2); // 使能KEY所在管腳的中斷
    GPIOIntEnable(GPIO_PORTA_BASE, GPIO_PIN_3);
                GPIOIntEnable(GPIO_PORTF_BASE, GPIO_PIN_4);
          IntEnable(INT_GPIOA);// 使能GPIOF端口總中斷
                IntEnable(INT_GPIOF);
          IntMasterEnable(); // 使能處理器總中斷
           
    while(1)    // 等待按鍵中斷
    {
        }
}
// end of main


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 色就干| 欧美成人一区二区 | 91精品国产一区二区三区 | 亚洲视频在线观看免费 | 日韩久久在线 | 国产成人精品久久二区二区 | 欧美日韩中文字幕在线播放 | 亚洲成人综合在线 | 亚洲福利| 亚洲最大av网站 | 最新国产福利在线 | 情侣av| www国产精品 | 欧美日韩在线成人 | 综合久久综合久久 | 成人国产免费观看 | 视频一区二区在线观看 | 91久操网| 可以看黄的视频 | 日本电影一区二区 | 国产一区二区电影 | 激情毛片| 免费av直接看| 日韩一级精品视频在线观看 | av网站免费观看 | 国产精品成人一区二区 | 一区在线观看 | 久久久久91 | 天堂成人av | 国产亚洲成av人在线观看导航 | 羞羞视频在线观免费观看 | 国产亚洲精品久久久优势 | 国产黄色网| 精品久久久久久国产 | 91亚洲国产成人久久精品网站 | 亚洲国产成人精品女人久久久 | 欧美国产中文字幕 | 啪啪综合网 | 免费在线观看av片 | 国产日韩欧美激情 | 91精品国产日韩91久久久久久 |