⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 st.c

📁 最新版IAR FOR ARM(EWARM)5.11中的代码例子
💻 C
字号:
/*************************************************************************
 *
 *    Used with ICCARM and AARM.
 *
 *    (c) Copyright IAR Systems 2007
 *
 *    File name   : st.c
 *    Description : Main file
 *
 *    History :
 *    1. Date        : August 2, 2007
 *       Author      : Stanimir Bonev
 *       Description : Create
 *
 *  This example project shows how to use the IAR Embedded Workbench for ARM
 * to develop code for the Samsung-S3F4A0K evaluation board. It shows
 * basic use of PIO, simple timer and generic interrupt controller.
 *  The example flashing LED DS4 (P1.9)
 *
 * Jumpers:
 *  J5 P1.9 - filled
 *  All other jumpers are in default position regarding board's manual
 *
 *    $Revision: 18083 $
 **************************************************************************/
#include <samsung\ios3f4a0k.h>
#include "arm_comm.h"
#include "board.h"
#include "gic.h"

/*************************************************************************
 * Function Name: ST0_IntrHandler
 * Parameters: none
 * Return: none
 *
 * Description: Simple timer interrupt handler
 *
 *************************************************************************/
__arm __irq void ST0_IntrHandler (void)
{
  GIC_ClearIntr(INO_INT_ST0);
  if(ST0_SR_bit.CHEND0)
  {
    // clear channel 0 load interrupt flag
    ST0_CSR = 1;
    // togging P1.9
    PIO1_WODR = PIO1_ODSR ^ (1<<9);
  }
  GIC_CompletIntr();
}

/*************************************************************************
 * Function Name: main
 * Parameters: none
 * Return: none
 *
 * Description: Main
 *
 *************************************************************************/
void main (void)
{
  // Enable PIO block
  PIO1_ECR = 1;
  // PIO Software Reset
  PIO1_CR = 1;
  // P1.9 is PIO
  PIO1_PER  = 1 << 9;
  // Enable Push-pull
  PIO1_MDDR = 1 << 9;
  // Set P1.9 to output
  PIO1_OER  = 1 << 9;
  // Clear output (LED off)
  PIO1_CODR = 1 << 9;
  // Simple timer init
  // ST0 block enable
  ST0_ECR = 1 << 1;
  // software reset
  ST0_CR = 1;
  // channel 0 disable
  ST0_CR = 1 << 16;
  // init channel 0
  // Timer period - 100ms
  // timer resolution 4us (LFCLK = 250 kHz)
  ST0_PR0_bit.PRESCAL = 0;  // /1
  ST0_PR0_bit.SYSCAL  = 0;  // /1
  ST0_PR0_bit.AUTOREL = 1;  // The counter is automatically reloaded
  ST0_CT0 = LFCLK_FREQ*100/1000;  // 100ms
  // Clear pending interrupt flags
  ST0_CSR =(Int32U) -1;
  // Install ST0 interrupt handler
  GIC_InstallIntr(INO_INT_ST0,(void *)ST0_IntrHandler,0,POS_EDGE_TRIG,FALSE);
  // enable GIC ST interrupt
  GIC_IntrEnable(INO_INT_ST0);
  // enable ST0 load interrupt
  ST0_IER = 1;
  // channel 0 enable
  ST0_CR = 1 << 8;
  __enable_interrupt();
  while(1)
  {
  }
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -