zoukankan      html  css  js  c++  java
  • AT91SAM7SE应用 IRQ

    最近在使用 ATMEL 的AT91SAM7SE256 来处理FPGA 输出的数据,然后再把数据发送到PC机端。

    既利用了FPGA 高速数字信号处理的优势,又发挥了ARM处理器对控制类信号的简洁处理。。

    在使用的过程中,感觉AT91SAM7SE256的资料比较少,所以在这里我把自己测试过的代码放上来,提供下载。。

    开发环境如下所示: 

    IDE-Version:
    μVision V4.23.00.0
    Copyright (C) 2011 ARM Ltd and ARM Germany GmbH. All rights reserved.

    Tool Version Numbers:
    Toolchain: MDK-ARM Standard Version: 4.23
    Toolchain Path: D:\Keil\ARM\BIN40
    C Compiler: Armcc.Exe V4.1.0.894
    Assembler: Armasm.Exe V4.1.0.894
    Linker/Locator: ArmLink.Exe V4.1.0.894
    Librarian: ArmAr.Exe V4.1.0.894
    Hex Converter: FromElf.Exe V4.1.0.894
    CPU DLL: SARM.DLL V4.23
    Dialog DLL: DARMATS.DLL V1.20
    Target DLL: UL2ARM.DLL V1.67
    Dialog DLL: TARMATS.DLL V1.20

    外部信号上升沿出发的IRQ0中断。

    irq.h

    View Code
    #ifndef IRQ_H
        #define IRQ_H
    
        #include "AT91SAM7SE512.h"
        #include "lib_AT91SAM7SE512.h"
        #include "Board.h"
    
    
    
        extern uint32 status_irq;
    
        extern __irq void at91_IRQ0_handler(void);
        extern void irq0_init(void);
    
    #endif

    irq.c

    View Code
    #include "irq.h"
    
    
    static uint32 status_irq = 0;
    
    //__irq void at91_IRQ0_handler(void)
    __irq void at91_IRQ0_handler(void)
    {
        status_irq++;
    
        AT91F_AIC_ClearIt(AT91C_BASE_AIC, AT91C_ID_IRQ0);
        AT91F_AIC_AcknowledgeIt(AT91C_BASE_AIC);
    }
    
    
    #define IRQ0_INTERRUPT_LEVEL    2
    void irq0_init(void)
    {
    
        AT91PS_AIC pAic;
        // Load System pAic Base address
        pAic = AT91C_BASE_AIC;
        // First, enable the clock of the PIOB
        AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOB);
        // open external IRQ0 interrupt
        AT91F_PIO_CfgPeriph(AT91C_BASE_PIOB, 1 << 20, 0);
        // open external IRQ0 interrupt
        AT91F_AIC_ConfigureIt(pAic, AT91C_ID_IRQ0, IRQ0_INTERRUPT_LEVEL, AT91C_AIC_SRCTYPE_POSITIVE_EDGE, at91_IRQ0_handler);
        AT91F_AIC_EnableIt(pAic, AT91C_ID_IRQ0);
        AT91F_AIC_Trig(pAic, AT91C_ID_IRQ0);
    
    }

    头文件AT91SAM7SE512.h为μVision V4.23.00.0自带的

    头文件 lib_AT91SAM7SE512.h 为 ATMEL提供的一个库文件,里面有一些使用的函数来实现对AT91SAM7SE256 的配置。文件请到这里下载。

  • 相关阅读:
    jsp中上传图片(使用ajaxfileupload)
    快慢的悖论
    为什么所有的架构都是糟糕的
    软件项目是这样失败的。
    初识微信小程序
    Hibernate hql getHibernateTemplate()常用方法汇总
    JAVA中关于set()和get()方法的理解及使用
    java性能调优实战
    PLSQL显示乱码-无法进行中文条件查询解决
    Oracle 10g bigfile表空间简介
  • 原文地址:https://www.cnblogs.com/xiangtailiang/p/2663251.html
Copyright © 2011-2022 走看看