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

📄 myset.c

📁 基于ADI BLACKFIN的jbig压缩和解压缩程序
💻 C
字号:
#define PORTF_FER	(unsigned short*)0xffc03200

#define PORTF_DIR	(unsigned short*)0xffc00730

#define PORTF_SET	(unsigned short*)0xffc00708

#define PORTF_TOG	(unsigned short*)0xffc0070c

#define PORTF_INEN	(unsigned short*)0xffc00740

#define PORTF_EDGE	(unsigned short*)0xffc00738

#define PORTF_BOTH	(unsigned short*)0xffc0073c

#define PORTF_MASKA	(unsigned short*)0xffc00710

#define PORTF_MASKB	(unsigned short*)0xffc00720

#define PORTF_MASKA_SET	(unsigned short*)0xffc00718

#define PORTF_MASKB_SET	(unsigned short*)0xffc00728

#define PORTF_MASKA_CLEAR	(unsigned short*)0xffc00714

#define PORTF_MASKB_CLEAR	(unsigned short*)0xffc00724

#define PORTF_POLAR	(unsigned short*)0xffc00734

#define PORTF_CLEAR	(unsigned short*)0xffc00704


#define SIC_IMASK	(unsigned long*)0xffc0010c

#define IMASK		(unsigned long*)0xffe02104

#define IVG12		(unsigned long*)0xffe02030

#define SIC_ISR		(unsigned long*)0xffc00120


#define TIMER_ENABEL		(unsigned short*)0xffc00680

#define TIMER_DISABLE		(unsigned short*)0xffc00684

#define TIMER2_CONFIG		(unsigned short*)0xffc00620

#define TIMER2_COUNTER		(unsigned long*)0xffc00624

#define TIMER2_PERIOD		(unsigned long*)0xffc00628

#define TIMER2_WIDTH		(unsigned long*)0xffc0062c

#define TIMER_STATUS		(unsigned long*)0xffc00688



#define TIMER5_CONFIG		(unsigned short*)0xffc00650

#define TIMER5_COUNTER		(unsigned long*)0xffc00654

#define TIMER5_PERIOD		(unsigned long*)0xffc00658

#define TIMER5_WIDTH		(unsigned long*)0xffc0065c


extern void set_led(unsigned led_no);

#include "myset.h"

#include "my_config.h"

// #include <sys/exception.h>

#define PB_EVENT		0x08000000UL

#define PF5_BP4			0x20

#define TIMER2_EVENT	0x00200000UL

#define TIMER5_EVENT	0x01000000UL

#define TIMIL2			0x4

#define TIMIL5			0x20000



unsigned tmr5_ticks = 0;


#pragma interrupt_level_12 
static void key_isr(int _r0x, int _r1x, int _r2x)
{
	unsigned long *p = SIC_ISR;
	
	unsigned long *q = TIMER_STATUS;
	
	unsigned long n = *p;
	
	unsigned long old_stats = 0UL;
	
	asm("[--sp] = reti;");
	
	do
	{
	
		if(n & PB_EVENT)
		{
			set_led(PF_LED5);
		
			old_stats |= PB_EVENT;
		}
		
		else if(n & TIMER2_EVENT)
		{	
			asm("nop;");
		
			old_stats |= TIMER2_EVENT;
		}
	
		else if(n & TIMER5_EVENT)
		{
			asm("nop;");
		
			old_stats |= TIMER5_EVENT;
		}
	
		tsk_delay(120);
		
		n = *p;
		
		n &= ~old_stats;
	}
	while(n);
	
	asm("reti = [sp++];");
	
	*q = 0x000f000f;
	
	p = (unsigned long*)PORTF_CLEAR;
	
	*(unsigned short*)p = 0xffff;

}


void gpio_init(void)
{
	unsigned short *p = PORTF_FER;
	
	unsigned long *q;
	
	*p = 0x8000;

	asm("ssync;");
	
	p = PORTF_INEN;
	
	*p |= 0x80b0;
	
	p = PORTF_DIR;
	
	*p |= 0x0fc0;
	
	asm("ssync;");
	
	p = PORTF_SET;
	
	*p |= 0x0fc0;
	
	asm("ssync;");
	
	p = PORTF_EDGE;
	
	*p |= 0xb0;

	p = PORTF_MASKA_SET;
	
	*p |= 0xb0;
	
	q = SIC_IMASK;
	
	*q |= 0x09200000;
	
	q = IMASK;
	
	*q |= 0x1000;
	
	q = IVG12;
	
	*q = (unsigned long)&key_isr;
	
	
	p = TIMER2_CONFIG;
	
	*p = 0x1d;
	
	q = TIMER2_PERIOD;
	
	*q = 0x5200;
	
	q = TIMER2_WIDTH;
	
	*q = 0x100;
	
	p = TIMER5_CONFIG;
	
	*p = 0x1d;
	
	q = TIMER5_PERIOD;
	
	*q = 0x5300;
	
	q = TIMER5_WIDTH;
	
	*q = 0x100;
	
	p = TIMER_ENABEL;
	
	*p = 0x4;
}



#pragma optimize_for_speed
void set_led(unsigned led_no)
{	
	unsigned short *p = PORTF_TOG;
	
	*p |= led_no;
	
	asm("ssync;");
}
	

⌨️ 快捷键说明

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