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

📄 accelerator.c

📁 OKI 675050 hardware accelerator sample program
💻 C
字号:
/**********************************************************************************/
/*                                                                                */
/*    Copyright (C) 2006 Oki Electric Industry Co., LTD.                          */
/*                                                                                */
/*    Module Name    :  Accelerator Source file                                   */
/*    File   Name    :  accelerator.c                                             */
/*    Revision       :  1.00                                                      */
/*    Date           :  2006/03/17                                                */
/**********************************************************************************/
#include "accelerator.h"

extern	ULONG	exec_finish_flag;

/****************************************/
/*
	calculate_PQmodN()
										*/
/****************************************/
UCHAR calculate_PQmodN(ULONG *P ,ULONG *Q , ULONG *N, UCHAR mode)
{
	if((mode == 0) || (mode > 4) )
	{
		return(NG);
	}
	set_Reg((ULONG*)NREG , N,MAXWORD);
	set_Reg((ULONG*)T1REG , P,MAXWORD);
	set_Reg((ULONG*)T2REG , Q,MAXWORD);
	start_Calculate(mode);
	wait_Calculate();	

	return(OK);
}


/****************************************/
/*
	set_Reg()
										*/
/****************************************/
void set_Reg(ULONG* reg , ULONG* T, UCHAR word)
{
    UCHAR i;
    for(i=0; i<word; i++){
        reg[i] = T[i];
    }

	return;
}


/****************************************/
/*
	start_Calculate(UCHAR mode)
										*/
/****************************************/
void start_Calculate(UCHAR mode)
{
	UCHAR i=0;

	i = mode;
	if(i >= 2){
		i = (UCHAR)( 1 << (mode-1));
	}
	
	*(ULONG *)MODCON2 = i;

	return;
}



/****************************************/
/*
	init_Accelerator(void)
										*/
/****************************************/
void init_Accelerator(void)
{
	*(ULONG *)CLKSTOP = 0;
    *(ULONG *)IRQMASK =0; 
    *(ULONG *)DMA_EN  =0; 
	*(ULONG *)MODCON1 =0x00000002;
	exec_finish_flag = 0;

	return;
}


/****************************************/
/*
	wait_Calculate(void)
										*/
/****************************************/
void wait_Calculate(void)
{
	while(1){
		if(exec_finish_flag == 1){
			break;
		}
	}
	
	exec_finish_flag = 0;

	return;
}

⌨️ 快捷键说明

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