zoukankan      html  css  js  c++  java
  • AT91SAM7SE应用 PIT 周期中断(1ms)


    最近在使用 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

    下面是PIT模块的控制的代码,能够产生一定时间周期的中断。

    pit.h

    View Code
    #ifndef PIT_H
        #define PIT_H
    
        #include "AT91SAM7SE512.h"
        #include "lib_AT91SAM7SE512.h"
        #include "Board.h"
    
    
        extern __irq void AT91F_SysHandler(void);
        ////temp=x*(MCK/16) x的单位为秒
        extern void pit_init(unsigned int temp);
    
    #endif

    pit.c

    View Code
     1 #include "pit.h"
     2 
     3 //中断服务函数
     4 __irq void AT91F_SysHandler(void)
     5 {
     6     static int StStatus;
     7     StStatus++;
     8     // Read the system timer status register
     9     if (AT91F_PITGetStatus(AT91C_BASE_PITC))
    10     {
    11         AT91F_PITGetPIVR(AT91C_BASE_PITC);
    12     }
    13     AT91F_AIC_AcknowledgeIt(AT91C_BASE_AIC);
    14 }
    15 
    16 
    17 
    18 
    19 //temp=x*(MCK/16) x的单位为秒 MCK为系统的时钟
    20 void pit_init(unsigned int temp)
    21 {
    22     //unsigned int temp = x*(MCK/16);
    23     AT91F_PITC_CfgPMC();
    24     AT91C_BASE_PITC->PITC_PIMR = temp; //x*(MCK/16) x的单位为秒     2995时为1ms
    25     AT91C_BASE_PITC->PITC_PIMR |= AT91C_PITC_PITEN;
    26     //AT91F_PITInit(AT91C_BASE_PITC, SYS_TMR_PER, (MCK / 1000000));
    27     AT91F_PITEnableInt(AT91C_BASE_PITC);
    28 
    29     // Read the system timer status register
    30     AT91F_PITGetPIVR(AT91C_BASE_PITC);
    31 
    32     AT91F_AIC_ConfigureIt(AT91C_BASE_AIC,  // AIC base address
    33     AT91C_ID_SYS,  // System peripheral ID
    34     AT91C_AIC_PRIOR_HIGHEST,  // Max priority
    35     AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL,  // Level sensitive
    36     AT91F_SysHandler);
    37 
    38     AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_SYS);
    39     
    40 }
  • 相关阅读:
    String前后去掉空格、option只能定义value值吗?还能添加什么值。dom和Jquery对象转换。
    JsonObject没有fromObject、idea引入maven有红线没依赖、JsonObject maven 依赖包
    json几个小例子
    [极客大挑战 2019]PHP1
    栈溢出原理笔记(一)
    CentOS7怎么安装图形界面
    快速搭建WordPress博客
    Mac 安装Mysql 之 Sqlservice 区别
    Metasploit-初篇
    Windows To Go 制作详解
  • 原文地址:https://www.cnblogs.com/xiangtailiang/p/2663277.html
Copyright © 2011-2022 走看看