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 的配置。文件请到这里下载。

  • 相关阅读:
    Roce ofed 环境搭建与测试
    Ubuntu 1804 搭建NFS服务器
    Redhat 8.0.0 安装与网络配置
    Centos 8.1 安装与网络配置
    SUSE 15.1 系统安装
    VSpare ESXi 7.0 基本使用(模板、iso、SRIOV)
    VSpare ESXi 7.0 服务器安装
    open SUSE leap 15.1 安装图解
    KVM虚拟机网卡连接网桥
    GitHub Action一键部署配置,值得拥有
  • 原文地址:https://www.cnblogs.com/xiangtailiang/p/2663251.html
Copyright © 2011-2022 走看看