📄 sw_4p.c
字号:
/*--------------------------------------------------------*/
/* WQ21ST SOFTWARE STUDIO. */
/*--------------------------------------------------------*/
/* Switch Test for TMS320LF2407 EVM */
/*--------------------------------------------------------*/
/* file name: sw_4p.c */
/* Started on: 08/11/2001 by: WQ */
/* Last update: 08/28/2001 by: WQ */
/*--------------------------------------------------------*/
#include "sw_4p.h"
#include "prot2407.h"
unsigned int get_sw(void);
volatile unsigned int ti_swled_data;
volatile unsigned int ti_sw_data;
#define MIN_SW 1
#define MAX_SW 5
#define MAX_SW_SHIFT 0x0010
#define SWITCH_MASK 0x000F
void ti_swled_on( unsigned int led_num )
{
unsigned int pattern;
pattern = 0x0001;
while (--led_num)
{
pattern <<= 1; /* move bit over */
}
ti_swled_data |= pattern;
OUTMAC( _TI_LED, ti_swled_data); /* turn on the led */
}
void ti_swled_off( unsigned int led_num )
{
unsigned int pattern;
pattern = 0x0001;
while (--led_num)
{
pattern <<= 1; /* move bit over */
}
ti_swled_data &= (~pattern);
OUTMAC( _TI_LED, ti_swled_data); /* turn off the led */
}
unsigned int ti_read_sw(void)
{
unsigned int sw_image;
sw_image = 0x0000;
ti_sw_data = 0xffff;
while (sw_image != ti_sw_data)
{
wait_ms( 2 );
sw_image = get_sw();
wait_ms( 2 );
ti_sw_data = get_sw();
}
return(ti_sw_data);
}
unsigned int wait_on_sw(unsigned int pattern)
{
unsigned int switches;
switches = (~pattern);
while( switches != pattern ) /* does sw == requested ? */
{
switches = ti_read_sw();
}
}
unsigned int ti_sw_test(void)
{
unsigned int sw_err, ctr, temp;
sw_err = 0; /* show no error */
for (ctr=MIN_SW; ctr < MAX_SW; ctr++) /* turn all leds on */
{
ti_swled_on(ctr);
}
wait_on_sw(0x0000); /* make sure all switches are off */
for (ctr=MIN_SW;ctr < MAX_SW;ctr++) /* turn all leds off */
{
ti_swled_off(ctr);
}
ctr = 0x0001;
temp = 1; /* set led # */
while (ctr != MAX_SW_SHIFT)
{
wait_on_sw(ctr); /* wait for sw2-1-4 on only */
ti_swled_on(temp); /* turn on new led */
wait_on_sw((unsigned int)0);
ti_swled_off(temp); /* turn off previous led */
ctr <<= 1; /* shift sw pattern */
temp++; /* next led */
}
wait_on_sw((unsigned int)0); /* all switches off */
ti_swled_off((unsigned int)4); /* turn off last led */
return(sw_err);
}
unsigned int get_sw(void)
{
unsigned int sw_image;
INMAC( _TI_SW, ti_sw_data);
sw_image = ti_sw_data;
sw_image &= SWITCH_MASK;
return(sw_image);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -