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

當(dāng)前位置:首頁 > > 充電吧
[導(dǎo)讀]經(jīng)過幾天的努力,期間遇到很多的麻煩,終于搞定了S3C6410裸機(jī)中斷,測(cè)試使用的是外部中斷0組的PN0,定時(shí)器使用的是定時(shí)器0.?之前一直很郁悶的是網(wǎng)上的一些S3C6410使用的中斷都是像51單片機(jī)那

經(jīng)過幾天的努力,期間遇到很多的麻煩,終于搞定了S3C6410裸機(jī)中斷,測(cè)試使用的是外部中斷0組的PN0,定時(shí)器使用的是定時(shí)器0.

?

之前一直很郁悶的是網(wǎng)上的一些S3C6410使用的中斷都是像51單片機(jī)那樣的固定中斷向量入口,這種方式不僅需要匯編支持,而且效率相當(dāng)?shù)牡拖?既然S3C6410自帶有中斷處理協(xié)處理器VIC,那么我還是建議使用VIC來管理中斷.

?

下面這段話摘自網(wǎng)上,不知道是誰寫的,但是要謝謝他,讓我搞清楚了如何使用裸機(jī)中斷.

///////////////////////////////////////////////////////////////////////////////

為了向下兼容,6410保留了2410的軟件中斷跳轉(zhuǎn)方式,在三星的文檔里被稱為SystemBUS模式,默認(rèn)的,而其特有的VIC Port模式則要手動(dòng)開啟,啟動(dòng)代碼:

?

mrc p15,0,r0,c1,c0,0

orrr0,r0,#(1<<24)

mcr p15,0,r0,c1,c0,0

?

將其加到啟動(dòng)文件的main函數(shù)入口點(diǎn)之前即可開始VICPort模式,在這個(gè)模式下,中斷的使用簡(jiǎn)單了不少,比如說我要用某個(gè)按鍵來實(shí)現(xiàn)外部中斷,則相應(yīng)的過程如下:

?

初始化中斷向量控制器:

?

????? 填充?rVICxINTENCLEAR ,清空VICxINTSELECT和VICxADDR,這步嘛沒什么可說的,就是一個(gè)簡(jiǎn)單的重置工作。

?

配置按鍵對(duì)應(yīng)的GPIO腳為中斷模式:

?

???? GPxxCON?每一個(gè)腳的配置占此寄存器的2位,其中中斷配置為10b,將對(duì)應(yīng)的兩位位設(shè)為10b即可使用中斷功能。

?

開啟中斷:

?

??將VICxINTENABLE對(duì)應(yīng)位置一即可開啟對(duì)應(yīng)的中斷,比如要開啟11號(hào)中斷,就將此寄存器第11位置一,注意此寄存器是32位的,x=0的時(shí)候開啟0-31號(hào)中斷,x=1時(shí)開啟剩下的中斷。

?

設(shè)置外部中斷類型:

?

???操作EINxCONy,中斷分組對(duì)應(yīng)的寄存器可以在三星的手冊(cè)里查到,每?jī)蓚€(gè)中斷占用寄存器的三位,換句話說,寄存器每三位控制兩個(gè)中斷的觸發(fā)方式,其中中斷號(hào)小的偶數(shù)的兩倍對(duì)應(yīng)起始位,中斷號(hào)大的奇數(shù)的兩倍對(duì)應(yīng)結(jié)束位,例如EINT11、10,對(duì)應(yīng)寄存器的[22:20]三位,這三位怎么配手冊(cè)上有詳細(xì)描述,不廢話。

?

裝載中斷伺服程序:

?

/////////////////////////////////////////////////////////////////////////

void led_init(void)

{

GPIOM->CON????????=0x1111;

GPIOM->DAT????????=0;

}

?

void Delay(u32 n)

{

u32i;

while(n--)

{

for(i= 0;i < 2000000;i ++);

}

}

?

void __irqIRQ_Exception(void)

{

EINT0PEND= 1;//寫1清除中斷標(biāo)志

GPIOM->DAT^= BIT2;

ClearInterrupt(INT_EINT0);//中斷結(jié)束

}

?

void Key_Init(void)

{

//PN0

GPION->CON= 2;//外部中斷模式

EINT0CON0= 0x2;

EINT0PEND= 0xffffffff;

EINT0MASK&= ~(BIT0);//取消中斷屏蔽

Set_IsrAddr(INT_EINT0,(u32)IRQ_Exception);????????//設(shè)置中斷矢量入口

Set_IntEnable(INT_EINT0,Enable);

}

?

?

void __irqIsr_Timer0(void)

{

TINT_CSTAT|= BIT5;//清除中斷標(biāo)志

GPIOM->DAT^= 1 << 3;

ClearInterrupt(INT_TIMER0);//中斷結(jié)束

}

?

?

voidTIMER0_Init(void)

{

TCFG0=65;????????//定時(shí)器0預(yù)分頻65+1,由PCLK=66提供時(shí)鐘,66分頻產(chǎn)生1MHz的定時(shí)器時(shí)鐘

TCON= BIT3;//定時(shí)器0自動(dòng)更新使能

TCNTB0 = 200000;//重裝值,200ms

TINT_CSTAT|= BIT5;//清除中斷標(biāo)志

TINT_CSTAT= 1;//使能定時(shí)器0中斷

Set_IsrAddr(INT_TIMER0,(u32)Isr_Timer0);????????//設(shè)置中斷矢量入口

Set_IntEnable(INT_TIMER0,Enable);//使能定時(shí)器0全局中斷

//以下操作啟動(dòng)定時(shí)器0

TCON|= BIT1;//手動(dòng)更新

TCON&= ~BIT1;//結(jié)束手動(dòng)更新

TCON|= BIT0;//啟動(dòng)定時(shí)器0

?

}

?

?

?

//主函數(shù)

void main(void)

{

u8i;

?

led_init();

Key_Init();

TIMER0_Init();

while(1)

{

for(i= 0;i < 2;i ++)

{

GPIOM->DAT^= 1 << i;

Delay(10);

}

}

}


//把下面的匯編加入到啟動(dòng)文件中,主要用來打開CPU中斷和初始化VIC

;VIC Port模式,開啟后就可以不用匯編使用中斷,使用VIC控制中斷
mrc p15,0,r0,c1,c0,0
orr r0,r0,#(1<<24)
mcr p15,0,r0,c1,c0,0

;允許中斷,開啟CPU總中斷
MRS R0, CPSR ? ? ? ? ;將CPSR保存至R0寄存器中
BIC R0, R0, #0x80 ? ?;R0 = R0 & ~0x80,清除中斷位
MSR CPSR_c, R0 ? ? ? ;將R0寫回CPSR狀態(tài)寄存

?

?

以上就是相關(guān)的代碼,因?yàn)榇蠹业募拇嫫骱甓x不同,因此名字可能不同,因?yàn)槲覍懥俗⑨尩?大家可以對(duì)著文檔,設(shè)置相應(yīng)的寄存器就可以了,如果需要可以找我,郵箱:cp1300@139.com

?

由于我也是剛學(xué)裸機(jī)操作,希望大家多多指導(dǎo).

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

如果讀者朋友已經(jīng)有過匯編相關(guān)基礎(chǔ),能夠夠好理解本文內(nèi)容。匯編語言是比C語言更接近機(jī)器底層的編程語言,能讓我們更好的理解和操縱硬件底層。

關(guān)鍵字: 匯編 C語言

從匯編角度來說,如果“test %al, %al”能改成“test %0x1, %al”就沒有匪夷所思的問題了,如此一來應(yīng)該會(huì)降低CPU的效率,畢竟執(zhí)行指令還需要一個(gè)立即數(shù),我沒搞過編譯器也沒設(shè)計(jì)過CPU,純屬瞎猜,能搞...

關(guān)鍵字: 匯編 CPU 編譯器

【說在前面的話】其實(shí)我很久之前就想寫這篇文章了,但彼時(shí)總覺得這是一個(gè)偽命題:既然已經(jīng)用了MDK,編譯出來的代碼,無論是體積還是性能都甩下armgcc好幾條街,誰還會(huì)想用gcc來進(jìn)行Cortex-M開發(fā)呢?對(duì)那些只能使用a...

關(guān)鍵字: GCC MDK 匯編

1.背景群里有個(gè)小伙伴學(xué)習(xí)設(shè)計(jì)加密方法,如同某商用軟件輸入注冊(cè)碼后就能使用擴(kuò)展功能。設(shè)計(jì)時(shí)他很自然的想著所寫的加密措施是否足夠健壯安全,是否有什么方法可以繞過加密檢查,也就是破解。權(quán)限管理僅在啟動(dòng)后檢查一次注冊(cè)碼是否有效...

關(guān)鍵字: 指令 匯編 軟件

最近很多伙計(jì)問我現(xiàn)在搞嵌入式還有沒有必要學(xué)習(xí)匯編?

關(guān)鍵字: 嵌入式 匯編

針對(duì)傳統(tǒng)類人機(jī)器人在控制系統(tǒng)實(shí)時(shí)性和視覺識(shí)別方面的不足,以S3C6410作為主控芯片,設(shè)計(jì)了具有視覺識(shí)別功能的類人機(jī)器人控制系統(tǒng),通過改進(jìn)和簡(jiǎn)化視頻識(shí)別算法取得了良好的目標(biāo)識(shí)別效果。實(shí)驗(yàn)表明,基

關(guān)鍵字: s3c6410 機(jī)器人 機(jī)器視覺

來源 :智能軟件研究中心,作者:羅宇哲,直接來源:華為開發(fā)者社區(qū) 聲明:本公眾號(hào)轉(zhuǎn)發(fā)僅為傳播相關(guān)技術(shù)知識(shí),不作任何商業(yè)用途,如有疑義請(qǐng)聯(lián)系刪除。 01 ARM匯編指令 操作系統(tǒng)中硬件相關(guān)的部分集中體現(xiàn)在匯編指令和對(duì)寄存器...

關(guān)鍵字: ARM 匯編

Part 1. 機(jī)器指令 上一次 我們已經(jīng)了解了 二進(jìn)制和 CPU 的基本原理,知道了程序運(yùn)行時(shí),CPU 每秒數(shù)以億次、十億次、百億次地震蕩著時(shí)鐘,同步執(zhí)行著微小的 「電子操作」,例如:從內(nèi)存讀取一個(gè)字節(jié)的數(shù)據(jù)到 CPU...

關(guān)鍵字: 高級(jí)編程 編程語言 匯編

來源 :智能軟件研究中心,作者:羅宇哲,直接來源:華為開發(fā)者社區(qū) 聲明:本公眾號(hào)轉(zhuǎn)發(fā)僅為傳播相關(guān)技術(shù)知識(shí),不作任何商業(yè)用途,如有疑義請(qǐng)聯(lián)系刪除。 01 ARM匯編指令 操作系統(tǒng)中硬件相關(guān)的部分集中體現(xiàn)在匯編指令和對(duì)寄存器...

關(guān)鍵字: ARM 匯編

北京時(shí)間4月30日早間消息,據(jù)外媒報(bào)道,F(xiàn)acebook首席執(zhí)行官扎克伯格周三警告稱,過早重新開放公共空間“幾乎可以肯定”將會(huì)導(dǎo)致新冠病毒的繼續(xù)爆發(fā),并帶來不良的經(jīng)濟(jì)后果。 扎克伯格在公司第一季度財(cái)報(bào)

關(guān)鍵字: 扎克伯格 FACEBOOK LTE 匯編
關(guān)閉