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

📄 init.c

📁 DSP DM642的HPI接口应用
💻 C
字号:
/********************************************************************************* * 声明: *      本程序只具备演示功能,不保证适用于您的真实应用。如需使用,请根据您 *  的实际需要修改本程序。 *      如果您使用本程序,表明您同意并确认已阅读、理解并愿意接受此条款和条 *  件制约后使用本程序。您同意此程序不适用于实际生产使用而且可能包含会影响 *  其正常运行的错误。 *      科银京成(以下简称CoreTek)拒绝承诺担保和有限责任。软件和文档的提供不 *  代表任何形式的担保。在适用法律所允许的最大范围内,CoreTek进一步拒绝承诺 *  所有担保,包括但不限于适销性、特殊目的的适应性、和非侵权的担保。由使用或 *  执行本软件和文档所产生的全部风险由您使用者自行承担。在适用法律所允许的最 *  大范围内,任何情况下,CoreTek决不就任何因本协议或使用或不能使用本产品所 *  发生的继发的、偶然的、间接的、特殊的、惩罚性的或其他任何损害承担责任(包 *  括但不限于商业利润损失、业务中断、营业资讯的遗失或其他金钱上的损失等)。 *  请确认,在此CoreTek已经告知您这种损害的可能性。 *      CoreTek不对任何第三方软件负责,对您使用第三方软件不承担任何责任。 ********************************************************************************** *                      北京科银京成技术有限公司 版权所有 * *                  Copyright (C) 2000-2005 CoreTek Systems Inc. **********************************************************************************//********************************************************************************* *  hello * *  这个demo是一个简单的多任务程序 * *********************************************************************************/#include <stdio.h>#include <stdlib.h>#include "usr_config.h"#include "board.h"#include "ARM9_HPI.h"#include "irq.h"/* tasks */delta_task  task_1();delta_task  task_2();delta_task  task_3();/* task id's */delta_id    task_id[ CONFIGURE_MAXIMUM_TASKS ];unsigned8   task_name[CONFIGURE_MAXIMUM_TASKS][8];INT32U   buf_write[255],buf_read[255];/* *  Preparation */void usr_prep( void ){ 	/* 此处可以加入用户自定义的准备工作 */ 	//printf( "\n\n****** Preparation Done. ******\n\n" );}/* *  task delete hook routine */void task_delete_hook( void *stack ){    free( stack );}/*DSP中断处理函数 */void DSP_isr(void){	//清除GPIO7中断	*(volatile unsigned long *)0x80840098 |= 0X80;}/* *  Init task *///初始化HPIC,设置之后不再改变,b=0/BOB=0;b=1/BOB=1;void Init_dsp_connect(INT32U b){     INT32U i;	   	//设置GPIO7为非中断	*(volatile unsigned int *)0x8084009c &= ~0x80;	//设置GPIO7为输入	*(volatile unsigned int *)0x80840010 &= ~0x80;	//设置GPIO7为沿触发	*(volatile unsigned int *)0x80840090 |= 0X80;	//设置GPIO7为下降沿触发	*(volatile unsigned int *)0x80840094 &= ~0X80;	//清除GPIO7中断	*(volatile unsigned int *)0x80840098 |= 0X80;	//设置GPIO7为中断	*(volatile unsigned int *)0x8084009c |= 0x80;	//808400a0--intStsA;中断标志寄存器		//设置连接DSP的总线的宽度,时限采用缺省配置,两外设置为16位宽度外设模式	//*(volatile unsigned long *)0x8008000c &= ~0x30000000;	//*(volatile unsigned long *)0x8008000c &= ~0x30000000;	//*(volatile unsigned long *)0x8008000c |= 0x10000000;	*(volatile unsigned int *)0x8008000c =0x3000fbe0; //0x30008080;//	Init_HPIC(b);		//安装DSP中断服务程序	delta_interrupt_set_handler((delta_vector_number)GPIOINTR,(delta_isr_entry)DSP_isr);	    for(i=0;i<255;i++)		buf_write[i]=i;	while(1)	{/*	Addr_Write(HPI_ADDR_HPIC_LW,0xffff);	for(i=0;i<200;i++)		;	Addr_Write(HPI_ADDR_HPIC_LW,0x0000);		for(i=0;i<200;i++)	;*/		//Write_DSP_Data_AD(0x00004000,buf_write,255);				INT32U  *p=(unsigned int *)0x080ff0004; 		buf_write[0] = 2;		buf_write[1] = 8;		buf_write[2] = 50;		Write_DSP_Data_AD(0x80FF0000,buf_write,3);						for(i=0;i<200;i++)		;				Read_DSP_Data(0x00004000,buf_read,255);				for(i=0;i<200;i++)		;	}}delta_task Init( delta_task_argument arg ){	Init_dsp_connect(0);	while(1)		;#if 0    	delta_status_code ret;    usr_prep();    /* create 3 tasks */    ret = delta_task_create( "task_1", 1,                             malloc( DELTA_MINIMUM_STACK_SIZE * 4 ),                             DELTA_MINIMUM_STACK_SIZE * 4,                             DELTA_DEFAULT_ATTRIBUTES,                             task_delete_hook,                            &task_id[1] );    ret = delta_task_create( "task_2", 1,                             malloc( DELTA_MINIMUM_STACK_SIZE * 4 ),                             DELTA_MINIMUM_STACK_SIZE * 4,                             DELTA_DEFAULT_ATTRIBUTES,                             NULL,                            &task_id[2] );    ret = delta_task_create( "task_3", 1,                             malloc( DELTA_MINIMUM_STACK_SIZE * 4 ),                             DELTA_MINIMUM_STACK_SIZE * 4,                             DELTA_DEFAULT_ATTRIBUTES,                             NULL,                            &task_id[3] );    /* start the 3 tasks */    ret = delta_task_start( task_id[1], task_1, 0 );    ret = delta_task_start( task_id[2], task_2, 0 );    ret = delta_task_start( task_id[3], task_3, 0 );    /* delete Init task */    delta_task_delete( DELTA_SELF );#endif	}/* *  task_1 */delta_task task_1(){    printf("Hello World!\n");    delta_task_get_name( DELTA_SELF, task_name[1] );    printf("My name is:%s\n\n",task_name[1]);    delta_task_delete( DELTA_SELF );}/* *  task_2 */delta_task task_2(){    delta_id    the_id;    printf("Hello World!\n");    delta_task_get_id( DELTA_SELF, &the_id );    printf("My id is:0x%x\n\n",the_id);    delta_task_suspend( DELTA_SELF );}/* *  task_3 */delta_task task_3(){    printf("Hello World!\n");    while(1)    {}}

⌨️ 快捷键说明

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