音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

注意ARM Image for uCOSII for lpc213x 模板中的TargetInit()

作者:上善若水 欄目:ARM技術(shù)
注意ARM Image for uCOSII for lpc213x 模板中的TargetInit()

對(duì)于很多使用ZLG ARM Image for uCOSII for lpc213x 模板的初學(xué)者,常常會(huì)置疑使用該模板后自動(dòng)生成的target.c文件,和在程序中調(diào)用的TargetInit()函數(shù),我和 Zgpswh都是如此,這個(gè)問(wèn)題當(dāng)初困擾了很久:當(dāng)用戶程序中不調(diào)用TargetInit()時(shí),發(fā)現(xiàn)內(nèi)核能運(yùn)行,但是等待機(jī)制失靈,調(diào)用TargetInit(),很多硬件中斷打不開(kāi),后來(lái),在很多熱心人的指點(diǎn)下解決了,現(xiàn)重新總結(jié)如下:

請(qǐng)仔細(xì)察看ZLG模板里的target.c文件,這里的TargetInit()如下:

  void TargetInit(void)
{
    OS_ENTER_CRITICAL();
    srand((uint32) TargetInit);
    VICInit();
    Timer0Init();
    OS_EXIT_CRITICAL();
}

其中的Timer0Init();用于硬件定時(shí)器0的初始化,事實(shí)上,ZLG的移植代碼的μC/OS-Ⅱ的時(shí)鐘節(jié)拍是通過(guò)定時(shí)器0提供的,不在主程序里調(diào)用這個(gè)函數(shù),μC/OS-Ⅱ的時(shí)鐘源就無(wú)法打開(kāi);但是,沒(méi)有開(kāi)啟時(shí)鐘源的μC/OS-Ⅱ是同樣能運(yùn)行的,只是內(nèi)核提供的延時(shí)和等待時(shí)限機(jī)制都不起作用,系統(tǒng)雖能將就運(yùn)行,但因沒(méi)調(diào)用TargetInit()而使內(nèi)核功能不健全。

請(qǐng)注意,TargetInit()中的另一個(gè)函數(shù)VICInit()是用來(lái)中斷的初始化,它其中含有對(duì)UART0中斷的分配,在用戶程序里需要根據(jù)使用的硬件中斷修改這部分代碼,否則,這些硬件中斷無(wú)法開(kāi)啟;再者,在不調(diào)用TargetInit()的時(shí)候,硬件的中斷初始化是在硬件初始化函數(shù)中完成,這也就是Zgpswh提到的現(xiàn)象:不調(diào)用TargetInit()內(nèi)核運(yùn)行異常,調(diào)用了卻開(kāi)不了UART0的中斷。

解決的方法如下:
這在《ARM嵌入式系統(tǒng)基礎(chǔ)教程》的430頁(yè)7.4.3節(jié)中論述的很清楚:

……關(guān)鍵在于把程序與芯片相關(guān)中斷源掛接,使芯片在產(chǎn)生相應(yīng)的中斷后會(huì)調(diào)用相應(yīng)的處理程序。這需要做兩方面事情:
1. 增加匯編接口的支持!
2. 初始化向量中斷控制器!

按照一下方法完成中斷源的的掛接:
1、增加匯編接口的支持。方法是修改IRQ.s文件,在末尾添加本句代碼:

UART0_Handler HANDLER UART0_Exception

追加定義了通用串口0 中斷句柄。
2、初始化向量中斷控制器。將target.c文件中的VICInit()修改如下:

void VICInit(void)
{  extern void IRQ_Handler(void);
   extern void Timer0_Handler(void);
   extern void UART0_Handler(void);
   VICIntEnClr = 0xffffffff;
   VICDefVectAddr = (uint32)IRQ_Handler;
   VICVectAddr0 = (uint32)Timer0_Handler;
   VICVectCntl0 = (0x20 | 0x04);
   VICIntEnable = 1 << 4;
   VICVectAddr14 = (uint32)UART0_Handler;
   VICVectCntl14 = (0x20 | 0x06);
   VICIntEnable = 1 << 6;
}

此為初始化向量中斷控制器。包括定時(shí)器0和串口0,特別要注意的是,一定不可以省略對(duì)定時(shí)器0的初始化

2樓: >>參與討論
zgpswh
我按你的方法試過(guò)了,還是進(jìn)不了中斷。!
我按你的二種步驟試過(guò)了,還是進(jìn)不了中斷!。

中斷
        void UART0_Exception(void)
{
    IO1CLR=LED;
    OSTimeDly(OS_TICKS_PER_SEC/50);
    IO1SET=LED;
    OSTimeDly(OS_TICKS_PER_SEC/50);

}
    我不知問(wèn)題出在哪里,真搞暈了,不知上善若水兄弟有沒(méi)有試出來(lái)該程序?

3樓: >>參與討論
wlq_9
中斷里面調(diào)延時(shí)???
你真幽默!

4樓: >>參與討論
zgpswh
幽默!請(qǐng)指點(diǎn)...
幽默!請(qǐng)指點(diǎn)...
幽默!請(qǐng)指點(diǎn)...
幽默!請(qǐng)指點(diǎn)...

5樓: >>參與討論
上善若水
中斷里,不可以調(diào)用延時(shí)
請(qǐng)注意,中斷里面是不支持等待機(jī)制的。請(qǐng)用自己編的一個(gè)軟件延時(shí),問(wèn)題就可以解決了。中斷源掛接正確是沒(méi)問(wèn)題的。

6樓: >>參與討論
上善若水
需要補(bǔ)充的是,
盡管μC/OS-II的中斷服務(wù)程序中,不可以調(diào)用延時(shí),但并不是說(shuō)調(diào)用了延時(shí)后內(nèi)核就不動(dòng)了,而是,不執(zhí)行延時(shí),你的中斷服務(wù)程序里,先點(diǎn)亮緊接著熄滅,肉眼看來(lái)就好像沒(méi)亮過(guò),還以為沒(méi)進(jìn)過(guò)中斷,其實(shí),進(jìn)去了,你沒(méi)察覺(jué)而已。

7樓: >>參與討論
zgpswh
好!多謝上善若水兄弟!
有幫助,好!多謝上善若水兄弟!

8樓: >>參與討論
上善若水
不必客氣
如果想感謝我就回答我在本版上提的問(wèn)題,并給以關(guān)注。我的一些積累有百分之八十來(lái)源于本論壇,特別是幾個(gè)高手的無(wú)私指點(diǎn)。

更重要的是,請(qǐng)以感恩的心態(tài)面對(duì)所有人的帖子,如果看到哪個(gè)帖子自己有能力回答,就請(qǐng)盡力回復(fù),切不可草草兩句,別人再問(wèn)時(shí),沒(méi)了回音。哪怕會(huì)因此浪費(fèi)一些自己的時(shí)間。須知,有所得便應(yīng)有所付出。


9樓: >>參與討論
zgpswh
你的想法很對(duì),大家應(yīng)該相互幫助!
你的想法很對(duì),大家應(yīng)該提供力所能及的幫助!

10樓: >>參與討論
armuclinux
有問(wèn)題如何請(qǐng)教你?
高手,可否告知e-mail,有問(wèn)題可以及時(shí)請(qǐng)教你,謝謝!

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
用KEIL編譯,怎么有這么多錯(cuò)?
關(guān)于在lpc2200上移植ucos2的問(wèn)題
請(qǐng)幫忙:在調(diào)試SMART2200中ucos gpio的范例
請(qǐng)問(wèn)LPC2000可以連接液晶電視嗎?(VGA)接口
請(qǐng)教ZLG_ARM
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)