S3C6410裸机程序相关系统函数
扫描二维码
随时随地手机看文章
裸机程序中可能用到的文件以及函数
//system.c
/*************************************************************************************************************
*文件名:system.c
*功能:S3C6410相关系统函数
*作者:cp1300@139.com
*创建时间:2012年3月4日11:25
*最后修改时间:2012年3月4日
*详细:2012年3月5日17:00添加VIC相关函数
*************************************************************************************************************/
#include"system.h"
/*************************************************************************************************************************
*函数:voidSetEINT_TriggerMode(u8EINT0_N,u8Trigger)
*功能:设置外部中断组0触发模式
*参数:EINT0_N:中断源的编号(见:中断组0编号定义);Trigger:触发模式(EXT_LowLevel:低电平触发;EXT_HighLevel:高电平触发;
EXT_NegEdge:下降沿触发;EXT_PosEdge:上升沿触发;EXT_Edge:边沿触发)
*返回:无
*依赖:底层宏定义
*作者:cp1300@139.com
*时间:20120304
*最后修改时间:20120304
*说明:编号GPN0--->GPN15GPL8--->GPL14GPM0--->GPM4,中断设置必须两个两个一起
*************************************************************************************************************************/
voidSetEINT0_TriggerMode(vu8EINT0_N,vu8Trigger)
{
if(EINT0_N&0x80)//EINT0CON1
{
EINT0_N-=0x80;//减去标记
rEINT0CON1&=~(7< rEINT0CON1|=Trigger< } else//EINT0CON0 { rEINT0CON0&=~(7< rEINT0CON0|=Trigger< } } /************************************************************************************************************************* *函数:voidSet_GateClk(u8HCLK_DIV,FunctionalStateEnable) *功能:CLK时钟门控设置(HCLK,PCLK,SCLK) *参数:CLK_DIV:外设(见:CLK门控时钟定义);Enable=ENABLE,1使能;=DISABLE,0失能 *返回:无 *依赖:底层宏定义 *作者:cp1300@139.com *时间:20120305 *最后修改时间:20121005 *说明:PCLK_GATE添加标识0x40,SCLK_GATE添加标示0x80; *************************************************************************************************************************/ voidSet_GateClk(vu8CLK_DIV,FunctionalStateEnable) { vu32*P=&rHCLK_GATE; if(CLK_DIV&0x80)//SCLK { P=&rSCLK_GATE; CLK_DIV-=0x80;//去掉标示 } elseif(CLK_DIV&0x40)//PCLK { P=&rPCLK_GATE; CLK_DIV-=0x40;//去掉标示 } if(Enable==ENABLE)//使能 *P|=1< else//失能 *P&=~(1< } /************************************************************************************************************************* *函数:voidSet_INTtoIRQ(u8INT_N) *功能:设置一个中断为IRQ *参数:INT_N:中断编号(见:中断源编号定义); *返回:无 *依赖:底层宏定义 *作者:cp1300@139.com *时间:20120305 *最后修改时间:20120305 *说明:设置一个中断为普通中断模式 *************************************************************************************************************************/ voidSet_INTtoIRQ(vu8INT_N) { if(INT_N>31)//VIC1 { INT_N-=32; VIC1->INTSELECT&=~(1< } else//VIC0 VIC0->INTSELECT&=~(1< } /************************************************************************************************************************* *函数:voidSet_INTtoFIQ(u8INT_N) *功能:设置一个中断为FIQ *参数:INT_N:中断编号(见:中断源编号定义); *返回:无 *依赖:底层宏定义 *作者:cp1300@139.com *时间:20120305 *最后修改时间:20120305 *说明:设置一个中断为快速中断模式 *************************************************************************************************************************/ voidSet_INTtoFIQ(vu8INT_N) { if(INT_N>31)//VIC1 { INT_N-=32; VIC1->INTSELECT|=(1< } else//VIC0 VIC0->INTSELECT|=(1< } /**********************************************************************************