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