音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 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

向hotpower求助

作者:cmanning 欄目:MCU技術(shù)
向hotpower求助

hotpower 前輩:

  看了你的分析"非典架構(gòu)",我也遇到了類似的情況,
  各種條件正常時(shí)丟失中斷。
  尤其是硬件I2C的中斷,穩(wěn)定性較差。FIQ的外部中斷2,丟失較嚴(yán)重。
  
  我用的是LPC2138 + ads1.2 + ucos2 + 中斷嵌套(幾乎所有的外設(shè)中斷IRQ)
  由于沒用過kail,不能直接應(yīng)用你的文件。
  不知如何使用你的"非典架構(gòu)",修改我目前的文件,來解決問題。

我的
Startup.s文件
  
;define the stack size
;定義堆棧的大小
FIQ_STACK_LEGTH         EQU         0
IRQ_STACK_LEGTH         EQU         9*10             ;every layer need 9 bytes stack , permit 8 layer .每層嵌套需要9個(gè)字堆棧,允許8層嵌套
ABT_STACK_LEGTH         EQU         0
UND_STACK_LEGTH         EQU         0

NoInt       EQU 0x80

USR32Mode   EQU 0x10
SVC32Mode   EQU 0x13
SYS32Mode   EQU 0x1f
IRQ32Mode   EQU 0x12
FIQ32Mode   EQU 0x11

    IMPORT __use_no_semihosting_swi
    
;The imported LABELS    
;引入的外部標(biāo)號(hào)在這聲明
    IMPORT  FIQ_Exception                   ;FAST interrupt exceptions handler 快速中斷異常處理程序
    IMPORT  __main                          ;The entry point to the main function C語言主程序入口
    IMPORT  TargetResetInit                 ;initialize the target board 目標(biāo)板基本初始化
    IMPORT  SoftwareInterrupt

;The emported LABELS    
;給外部使用的標(biāo)號(hào)在這聲明
    EXPORT  bottom_of_heap
    EXPORT  StackUsr
    
    EXPORT  Reset
    EXPORT  __user_initial_stackheap

    CODE32

    AREA    vectors,CODE,READONLY
        ENTRY

;interrupt vectors
;中斷向量表
Reset
        LDR     PC, ResetAddr
        LDR     PC, UndefinedAddr
        LDR     PC, SWI_Addr
        LDR     PC, PrefetchAddr
        LDR     PC, DataAbortAddr
        DCD     0xb9205f80
        LDR     PC, [PC, #-0xff0]
        LDR     PC, FIQ_Addr

ResetAddr           DCD     ResetInit
UndefinedAddr       DCD     Undefined
SWI_Addr            DCD     SoftwareInterrupt
PrefetchAddr        DCD     PrefetchAbort
DataAbortAddr       DCD     DataAbort
Nouse               DCD     0
IRQ_Addr            DCD     0
FIQ_Addr            DCD     FIQ_Handler

;未定義指令
Undefined
        B       Undefined
        
;取指令中止
PrefetchAbort
        B       PrefetchAbort

;取數(shù)據(jù)中止
DataAbort
        B       DataAbort

;快速中斷
FIQ_Handler
        STMFD   SP!, {R0-R3, LR}
        BL      FIQ_Exception
        LDMFD   SP!, {R0-R3, LR}
        SUBS    PC,  LR,  #4


InitStack    
        MOV     R0, LR

;Build the SVC stack
;設(shè)置中斷模式堆棧
        MSR     CPSR_c, #0xd2
        LDR     SP, StackIrq
;Build the FIQ stack    
;設(shè)置快速中斷模式堆棧
        MSR     CPSR_c, #0xd1
        LDR     SP, StackFiq
;Build the DATAABORT stack
;設(shè)置中止模式堆棧
        MSR     CPSR_c, #0xd7
        LDR     SP, StackAbt
;Build the UDF stack
;設(shè)置未定義模式堆棧
        MSR     CPSR_c, #0xdb
        LDR     SP, StackUnd
;Build the SYS stack
;設(shè)置系統(tǒng)模式堆棧
        MSR     CPSR_c, #0xdf
        LDR     SP, =StackUsr

        MOV     PC, R0


ResetInit

        BL      InitStack               ; Initialize the stack 初始化堆棧
        BL      TargetResetInit         ; Initialize the target board 目標(biāo)板基本初始化
                                        ; Jump to the entry point of C program 跳轉(zhuǎn)到c語言入口
        B       __main


__user_initial_stackhea
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
有沒有51LPC的QQ交流群
i2c菜鳥問題
ADS IAR KILL 的編譯器分別是什么
請(qǐng)教單總線協(xié)議
a/d轉(zhuǎn)換無法進(jìn)中斷,請(qǐng)周工指教
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


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