📄 st.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 + -