www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 單片機 > 單片機
[導讀]這個程序?qū)懙暮苡幸馑?,注意設定的優(yōu)先級是(0~7)

這個程序?qū)懙暮苡幸馑?,注意設定的優(yōu)先級是(0~7)<<5,數(shù)值越小優(yōu)先級越高。具體的主程序的意思是:

針對中斷優(yōu)先級,我們設計了一個簡單的例程:兩路按鍵KEY1、KEY2輸入采用不同的優(yōu)先級中斷,分別在各自的中斷服務函數(shù)里控制指示燈LED1、LED2。

  其中,KEY1控制LED1、KEY2控制LED2。連接按鍵、指示燈的I/O均為低電平有效。
  在程序里,把KEY1中斷設置為較高的優(yōu)先級1、KEY2中斷設置為較低的優(yōu)先級2。KEY1、KEY2各自對應一個中斷服務函數(shù)。在中斷服務函數(shù)里做2件事情:清除中斷狀態(tài)、點亮對應的指示燈,然后進入一個死循環(huán)而不退出中斷。

  在程序運行后,如果先按KEY1點亮LED1,再按KEY2時LED2不亮,原因是KEY1優(yōu)先級比KEY2優(yōu)先級高,KEY2中斷無法打斷KEY1中斷。相反,如果先按KEY2點亮LED2,再按KEY1時也能點亮LED1,這說明較高級的KEY1中斷能夠打斷較低級的KEY2中斷。按/RST可以復位重來。

程序:

// 包含必要的頭文件
#include "LED.H"
#include
#include
#include
#include
#include
#include
#include
#include


// 將較長的標識符定義成較短的形式
#define SysCtlPeriEnable SysCtlPeripheralEnable
#define SysCtlPeriDisable SysCtlPeripheralDisable
#define GPIOPinTypeIn GPIOPinTypeGPIOInput
#define GPIOPinTypeOut GPIOPinTypeGPIOOutput


// 定義KEY
#define KEY_PERIPH SYSCTL_PERIPH_GPIOG
#define KEY_PORT GPIO_PORTG_BASE
#define KEY_PIN GPIO_PIN_5


// 防止JTAG失效
void JTAG_Wait(void)
{
SysCtlPeriEnable(KEY_PERIPH); // 使能KEY所在的GPIO端口
GPIOPinTypeIn(KEY_PORT , KEY_PIN); // 設置KEY所在管腳為輸入

if ( GPIOPinRead(KEY_PORT , KEY_PIN) == 0x00 ) // 如果復位時按下KEY,則進入
{
for (;;); // 死循環(huán),以等待JTAG連接
}

SysCtlPeriDisable(KEY_PERIPH); // 禁止KEY所在的GPIO端口
}


// GPIOD中斷初始化
void GPIOD_IntInit(void)
{
SysCtlPeriEnable(SYSCTL_PERIPH_GPIOD); // 使能GPIOD端口
GPIOPinTypeIn(GPIO_PORTD_BASE , GPIO_PIN_1); // 設置PD1管腳為輸入

GPIOIntTypeSet(GPIO_PORTD_BASE , // 設置PD1的中斷類型
GPIO_PIN_1 ,
GPIO_LOW_LEVEL);

IntPrioritySet(INT_GPIOD , 1 << 5); // 設置GPIOD中斷優(yōu)先級為1

GPIOPinIntEnable(GPIO_PORTD_BASE , GPIO_PIN_1); // 使能PD1管腳中斷
IntEnable(INT_GPIOD); // 使能GPIOD端口中斷
}


// GPIOG中斷初始化
void GPIOG_IntInit(void)
{
SysCtlPeriEnable(SYSCTL_PERIPH_GPIOG); // 使能GPIOG端口
GPIOPinTypeIn(GPIO_PORTG_BASE , GPIO_PIN_5); // 設置PG5管腳為輸入

GPIOIntTypeSet(GPIO_PORTG_BASE , // 設置PG5的中斷類型
GPIO_PIN_5 ,
GPIO_LOW_LEVEL);

IntPrioritySet(INT_GPIOG , 2 << 5); // 設置GPIOG中斷優(yōu)先級為2

GPIOPinIntEnable(GPIO_PORTG_BASE , GPIO_PIN_5); // 使能PG5管腳中斷
IntEnable(INT_GPIOG); // 使能GPIOG端口中斷
}


// 系統(tǒng)初始化
void SystemInit(void)
{
SysCtlLDOSet(SYSCTL_LDO_2_50V); // 設置LDO輸出電壓

SysCtlClockSet(SYSCTL_USE_OSC | // 系統(tǒng)時鐘設置,采用主振蕩器
SYSCTL_OSC_MAIN |
SYSCTL_XTAL_6MHZ |
SYSCTL_SYSDIV_1);

/*
SysCtlLDOSet(SYSCTL_LDO_2_75V); // 配置PLL前須將LDO電壓設置為2.75V

SysCtlClockSet(SYSCTL_USE_PLL | // 系統(tǒng)時鐘設置,采用PLL
SYSCTL_OSC_MAIN | // 主振蕩器
SYSCTL_XTAL_6MHZ | // 外接6MHz晶振
SYSCTL_SYSDIV_10); // 分頻結果為20MHz
*/

LED_Init(LED1 | LED2); // 初始化LED1和LED2

GPIOD_IntInit(); // GPIOD中斷初始化
GPIOG_IntInit(); // GPIOG中斷初始化

IntMasterEnable(); // 使能處理器中斷
}


int main(void)
{
JTAG_Wait(); // 防止JTAG失效,重要!
SystemInit(); // 系統(tǒng)初始化

for (;;) // 死循環(huán),等待按鍵中斷的產(chǎn)生
{
}
}


// GPIOD的中斷服務函數(shù)
void GPIO_Port_D_ISR(void)
{
unsigned long ulStatus;

ulStatus = GPIOPinIntStatus(GPIO_PORTD_BASE , true); // 讀取中斷狀態(tài)
GPIOPinIntClear(GPIO_PORTD_BASE , ulStatus); // 清除中斷狀態(tài),重要

if ( ulStatus & GPIO_PIN_1 ) // 如果PD1的中斷狀態(tài)有效
{
LED_On(LED1); // 點亮LED1

for (;;) // 死循環(huán),不退出中斷服務函數(shù)
{
}
}
}


// GPIOG的中斷服務函數(shù)
void GPIO_Port_G_ISR(void)
{
unsigned long ulStatus;

ulStatus = GPIOPinIntStatus(GPIO_PORTG_BASE , true); // 讀取中斷狀態(tài)
GPIOPinIntClear(GPIO_PORTG_BASE , ulStatus); // 清除中斷狀態(tài),重要

if ( ulStatus & GPIO_PIN_5 ) // 如果PG5的中斷狀態(tài)有效
{
LED_On(LED2); // 點亮LED2

for (;;) // 死循環(huán),不退出中斷服務函數(shù)
{
}
}
}

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

當多個同級別中斷同時發(fā)出中斷請求時,單片機中斷系統(tǒng)將按照自然優(yōu)先級別進行中斷排序,并首先響應其中自然優(yōu)先級別最高的中斷。

關鍵字: 中斷優(yōu)先級 單片機 中斷系統(tǒng)

引言   隨著汽車的普及和行駛速度的加快,交通事故及傷亡人數(shù)也在逐年上升。在發(fā)生汽車碰撞事故時,如何有效地保護司機和乘員生命的安全是迫切需要解決的問題。安全氣囊作為與安全帶配合使用的被動

關鍵字: ARM lm3s1138 安全氣囊 cortexm3

實現(xiàn)中斷允許控制和中斷優(yōu)先級控制分別由特殊功能寄存器區(qū)中的中斷允許寄存器IE和中斷優(yōu)先級寄存器IP來實現(xiàn)的。下面介紹這兩個特殊功能寄存器。

關鍵字: at89s51 中斷優(yōu)先級 中斷允許

中斷優(yōu)先級是CPU響應中斷的先后順序。中斷優(yōu)先處理的原則是:(1)先響應優(yōu)先級高的中斷請求,再響應優(yōu)先級低的中斷請求。(2)如果一個中斷請求己被響應,同級的其他中斷請求將被禁止。(3)如果同級的多個中斷請求同時出現(xiàn)

關鍵字: 中斷優(yōu)先級 先級處理

我自己依據(jù)此圖理解,應用思維導圖畫了一張方便理解:(如果看不清可通過ctrl+鼠標滑輪放大看;)前提條件1:組別優(yōu)先順序(第0組優(yōu)先級最強,第4組優(yōu)先級最弱):NVIC_PriorityGroup_0>NVIC_P...

關鍵字: STM32 中斷優(yōu)先級

一、FreeRTOS中斷設置介紹FreeRTOSConfig.h中定義了兩個宏,分別是:configKERNEL_INTERRUPT_PRIORITYconfigMAX_SYSCALL_INTERRUPT_PRIORIT...

關鍵字: freertos STM32 中斷優(yōu)先級

在MCS-中斷優(yōu)先級中由中斷優(yōu)先級寄存器IP來高置的,IP中某位設為1,相應的中斷就是高優(yōu)先級,否則就是低優(yōu)先級。---PSPT1PX1PT0PX0IP優(yōu)先級別寄存器各位介紹如下:PS:串行口中斷優(yōu)先級控制位。PS=1設...

關鍵字: 51單片機 中斷優(yōu)先級

一、背景USB在持續(xù)通信幾十萬次后,會出現(xiàn)USBIN中斷丟失幾次的情況,分析是中斷優(yōu)先級不夠高,導致USB中斷在排隊,然而排隊還未完成,又有新的USB中斷發(fā)生,致使其中斷丟失。LPC1769的所有中斷默認為最高優(yōu)先級&q...

關鍵字: 1769 lpc1768 中斷優(yōu)先級

8051 系列 MCU 的基本結構包括:32 個 I/O 口(4 組8 bit 端口);兩個16 位定時計數(shù)器;全雙工串行通信;6 個中斷源(2 個外部中斷、2 個定時/計數(shù)器中斷、1 個串口輸入/輸出中斷),兩級中斷優(yōu)...

關鍵字: interrupt using 中斷優(yōu)先級 c51中斷

試分析以下幾個中斷優(yōu)先級的排列順序(級別由高到低)是否有可能實現(xiàn)?若能,應如何設置中斷源的中斷優(yōu)先級別?若不能,試述理由。內(nèi)容來自單片機之家www.dpj100.com1)T0、T1、/INT0、/INT1、串行口;2)...

關鍵字: 中斷優(yōu)先級 單片機 排列順序
關閉