S3C6410裸機(jī)程序相關(guān)系統(tǒng)函數(shù)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
裸機(jī)程序中可能用到的文件以及函數(shù)
//system.c
/*************************************************************************************************************
*文件名:system.c
*功能:S3C6410相關(guān)系統(tǒng)函數(shù)
*作者:cp1300@139.com
*創(chuàng)建時(shí)間:2012年3月4日11:25
*最后修改時(shí)間:2012年3月4日
*詳細(xì):2012年3月5日17:00添加VIC相關(guān)函數(shù)
*************************************************************************************************************/
#include"system.h"
/*************************************************************************************************************************
*函數(shù):voidSetEINT_TriggerMode(u8EINT0_N,u8Trigger)
*功能:設(shè)置外部中斷組0觸發(fā)模式
*參數(shù):EINT0_N:中斷源的編號(hào)(見:中斷組0編號(hào)定義);Trigger:觸發(fā)模式(EXT_LowLevel:低電平觸發(fā);EXT_HighLevel:高電平觸發(fā);
EXT_NegEdge:下降沿觸發(fā);EXT_PosEdge:上升沿觸發(fā);EXT_Edge:邊沿觸發(fā))
*返回:無(wú)
*依賴:底層宏定義
*作者:cp1300@139.com
*時(shí)間:20120304
*最后修改時(shí)間:20120304
*說(shuō)明:編號(hào)GPN0--->GPN15GPL8--->GPL14GPM0--->GPM4,中斷設(shè)置必須兩個(gè)兩個(gè)一起
*************************************************************************************************************************/
voidSetEINT0_TriggerMode(vu8EINT0_N,vu8Trigger)
{
if(EINT0_N&0x80)//EINT0CON1
{
EINT0_N-=0x80;//減去標(biāo)記
rEINT0CON1&=~(7< rEINT0CON1|=Trigger< } else//EINT0CON0 { rEINT0CON0&=~(7< rEINT0CON0|=Trigger< } } /************************************************************************************************************************* *函數(shù):voidSet_GateClk(u8HCLK_DIV,FunctionalStateEnable) *功能:CLK時(shí)鐘門控設(shè)置(HCLK,PCLK,SCLK) *參數(shù):CLK_DIV:外設(shè)(見:CLK門控時(shí)鐘定義);Enable=ENABLE,1使能;=DISABLE,0失能 *返回:無(wú) *依賴:底層宏定義 *作者:cp1300@139.com *時(shí)間:20120305 *最后修改時(shí)間:20121005 *說(shuō)明:PCLK_GATE添加標(biāo)識(shí)0x40,SCLK_GATE添加標(biāo)示0x80; *************************************************************************************************************************/ voidSet_GateClk(vu8CLK_DIV,FunctionalStateEnable) { vu32*P=&rHCLK_GATE; if(CLK_DIV&0x80)//SCLK { P=&rSCLK_GATE; CLK_DIV-=0x80;//去掉標(biāo)示 } elseif(CLK_DIV&0x40)//PCLK { P=&rPCLK_GATE; CLK_DIV-=0x40;//去掉標(biāo)示 } if(Enable==ENABLE)//使能 *P|=1< else//失能 *P&=~(1< } /************************************************************************************************************************* *函數(shù):voidSet_INTtoIRQ(u8INT_N) *功能:設(shè)置一個(gè)中斷為IRQ *參數(shù):INT_N:中斷編號(hào)(見:中斷源編號(hào)定義); *返回:無(wú) *依賴:底層宏定義 *作者:cp1300@139.com *時(shí)間:20120305 *最后修改時(shí)間:20120305 *說(shuō)明:設(shè)置一個(gè)中斷為普通中斷模式 *************************************************************************************************************************/ voidSet_INTtoIRQ(vu8INT_N) { if(INT_N>31)//VIC1 { INT_N-=32; VIC1->INTSELECT&=~(1< } else//VIC0 VIC0->INTSELECT&=~(1< } /************************************************************************************************************************* *函數(shù):voidSet_INTtoFIQ(u8INT_N) *功能:設(shè)置一個(gè)中斷為FIQ *參數(shù):INT_N:中斷編號(hào)(見:中斷源編號(hào)定義); *返回:無(wú) *依賴:底層宏定義 *作者:cp1300@139.com *時(shí)間:20120305 *最后修改時(shí)間:20120305 *說(shuō)明:設(shè)置一個(gè)中斷為快速中斷模式 *************************************************************************************************************************/ voidSet_INTtoFIQ(vu8INT_N) { if(INT_N>31)//VIC1 { INT_N-=32; VIC1->INTSELECT|=(1< } else//VIC0 VIC0->INTSELECT|=(1< } /**********************************************************************************