久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機口袋實驗板中斷控制程序
[打印本頁]
作者:
51黑1
時間:
2018-4-11 21:40
標題:
單片機口袋實驗板中斷控制程序
//*****************************************************************************
// 本程序控制口袋實驗板上的3個LED指示燈,移位閃爍點亮,K2、K3、K4為中斷按鍵,分別控制紅燈、藍燈、綠燈的翻轉
// 藍色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"//系統時鐘
#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)//中斷處理子函數
{
unsigned char ucVal;
unsigned long ulStatus;//中斷狀態標識
ulStatus = GPIOIntStatus(GPIO_PORTA_BASE, true); // 讀取中斷狀態
GPIOIntClear(GPIO_PORTA_BASE, ulStatus); // 清除中斷狀態,重要
switch (ulStatus ) // 如果KEY的中斷狀態有效
{
case 0x04:
ucVal = GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_0); // 翻轉LED(藍)
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0, ~ucVal);
SysCtlDelay(10000000); // 延時約10ms,消除按鍵抖動
while (GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_2) == 0x00); // 等待KEY抬起
SysCtlDelay(10000000); // 延時約10ms,消除松鍵抖動
break;
case 0x08:
ucVal = GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_4); // 翻轉LED(綠)
GPIOPinWrite(GPIO_PORTA_BASE,GPIO_PIN_4, ~ucVal);
SysCtlDelay(10000000); // 延時約10ms,消除按鍵抖動
while (GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_3) == 0x00); // 等待KEY抬起
SysCtlDelay(10000000); // 延時約10ms,消除松鍵抖動
break;
}
}
void GPIO_PORTF_ISR(void)//中斷處理子函數
{
unsigned char ucVal;
unsigned long ulStatus;//中斷狀態標識
ulStatus = GPIOIntStatus(GPIO_PORTF_BASE, true); // 讀取中斷狀態
GPIOIntClear(GPIO_PORTF_BASE, ulStatus); // 清除中斷狀態,重要
switch (ulStatus ) // 如果KEY的中斷狀態有效
{
case 0x10:
ucVal = GPIOPinRead(GPIO_PORTD_BASE, GPIO_PIN_6); // 翻轉LED(紅)
GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_6, ~ucVal);
SysCtlDelay(10000000); // 延時約10ms,消除按鍵抖動
while (GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_4) == 0x00); // 等待KEY抬起
SysCtlDelay(10000000); // 延時約10ms,消除松鍵抖動
break;
}
}
//*****************************************************************************
// main 函數,每個工程項目內有且只有1個
//*****************************************************************************
int main(void)
{
//設置系統時鐘為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設置為輸出
GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_4); // PA4設置為輸出
GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_6); // PD6設置為輸出
//初始化三個燈的狀態
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,1<<0);//藍燈滅
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);//藍燈亮
SysCtlDelay(10000000);
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_0,1<<0); // 藍燈滅
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)設置為輸入
GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_3); // PA3(K3)設置為輸入
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_4); // PF4(K2)設置為輸入
GPIOIntTypeSet(GPIO_PORTA_BASE, GPIO_PIN_2, GPIO_LOW_LEVEL);//設置GPIOPA2中斷
GPIOIntTypeSet(GPIO_PORTA_BASE, GPIO_PIN_3, GPIO_LOW_LEVEL);//設置GPIOPA3中斷
GPIOIntTypeSet(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_LOW_LEVEL);//設置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
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日本黄色大片免费看
|
日本一区二区三区四区
|
九热在线
|
精品中文视频
|
天天躁日日躁狠狠的躁天龙影院
|
日韩精品久久久久
|
亚洲视频在线一区
|
欧美日韩亚洲系列
|
国产日韩视频在线
|
国产精品伦一区二区三级视频
|
a网站在线观看
|
国产一区二区精品在线
|
午夜a√
|
国产精品久久久久久一区二区三区
|
手机av网
|
午夜在线观看视频
|
精品一区二区在线观看
|
欧美一区二区三区在线观看
|
欧美精品三区
|
久久久久久91香蕉国产
|
日韩在线播放网址
|
久久久久网站
|
久久噜噜噜精品国产亚洲综合
|
特黄特色大片免费视频观看
|
在线播放中文字幕
|
一区二区三区四区视频
|
精品欧美乱码久久久久久
|
成人二区
|
一级黄色淫片
|
国产精品久久久久久一区二区三区
|
久久成人一区
|
免费一区二区
|
久草在线
|
日本在线免费视频
|
亚洲欧美在线观看视频
|
福利片在线观看
|
中文字幕精品一区
|
亚洲精品在线免费看
|
中文字幕成人网
|
日韩av在线一区
|
少妇无套高潮一二三区
|