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

📄 sub_fn.c

📁 hi everybody enjoy hi everybody enjoy hi everybody enjoy hi everybody enjoy hi everybody enjoy hi ev
💻 C
字号:
#include "uart_tr.h" 

void Str_Printf(char*);
void LED_on(int);
void LED_off(int);
void   off_All_LED();
void Value8_Printf(int);
void Value16_Printf(int);
void SPI_transmit();



void LED_on(int id)
{
  switch (id) {
        case 0:
             AT91C_BASE_PIOB->PIO_CODR = BSP_GPIOB_LEDS;
             break;

        case 1:
             AT91C_BASE_PIOB->PIO_CODR = BSP_GPIOB_LED1;
             break;

        case 2:
             AT91C_BASE_PIOB->PIO_CODR = BSP_GPIOB_LED2;
             break;

        case 3:
             AT91C_BASE_PIOB->PIO_CODR = BSP_GPIOB_LED3;
             break;

        case 4:
             AT91C_BASE_PIOB->PIO_CODR = BSP_GPIOB_LED4;
             break;
    }
  
  
  
}

void LED_off(int id)
{
  switch (id) {
        case 0:
             AT91C_BASE_PIOB->PIO_SODR = BSP_GPIOB_LEDS;
             break;

        case 1:
             AT91C_BASE_PIOB->PIO_SODR = BSP_GPIOB_LED1;
             break;

        case 2:
             AT91C_BASE_PIOB->PIO_SODR = BSP_GPIOB_LED2;
             break;

        case 3:
             AT91C_BASE_PIOB->PIO_SODR = BSP_GPIOB_LED3;
             break;

        case 4:
             AT91C_BASE_PIOB->PIO_SODR = BSP_GPIOB_LED4;
             break;
    }
  
}

void   off_All_LED()
{
  AT91C_BASE_PIOB->PIO_SODR = BSP_GPIOB_LEDS;
  AT91C_BASE_PIOB->PIO_SODR = BSP_GPIOB_LED1;
  AT91C_BASE_PIOB->PIO_SODR = BSP_GPIOB_LED2;
  AT91C_BASE_PIOB->PIO_SODR = BSP_GPIOB_LED3;
  AT91C_BASE_PIOB->PIO_SODR = BSP_GPIOB_LED4;
}

void Str_Printf(char *str1)
{
  int i,len;
  static char buffer[80];
    va_list   vArgs;
   
   va_start(vArgs, format); 
   vsprintf((char *)buffer, (char const *)str1, vArgs);
   va_end(vArgs);
   
   len=strlen(buffer);
   
  for(i=0;i<=len-1;i++)
    UART_DBG_WrByte(*str1++);
  
}

void Value8_Printf(int Data)
{
        int Temp, i;
        int Mask = 0xf0;
		
		Data &= 0xff;
		UART_DBG_WrByte('[');
        for (i = 0; i < 2; i++)
        {
                Temp =  ((Data & Mask) >> (1-i)*4 );
 
				/* hex to ascii */
                Temp &= 0x0f;
				if(Temp < 10)
                        Temp = Temp + 0x30;
                else
                        Temp = Temp + 0x37;
                UART_DBG_WrByte((char)Temp);
                Mask = Mask >> 4;
        }
		UART_DBG_WrByte(']'); 
}


void Value16_Printf(int aData)
{
  int nTemp, nI, nMask = 0xf000;

	aData &= 0xffff;
	UART_DBG_WrByte('[');
	for (nI = 0; nI < 4; nI++)
	{
		nTemp =  ((aData & nMask) >> (3-nI)*4 );
		/* hex to ascii */
		nTemp &= 0x000f;
		if(nTemp < 10)
						nTemp = nTemp + 0x30;
		else
						nTemp = nTemp + 0x37;
		UART_DBG_WrByte((char)nTemp);
		nMask = nMask >> 4;
	}
	UART_DBG_WrByte(']');
}
  
void SPI_transmit(int value)
{
    int Temp, i;
    int Mask = 0xf0;
    	
		value &= 0xff;
        for (i = 0; i < 2; i++)
        {
            Temp =  ((value & Mask) >> (1-i)*4 );
 				/* hex to ascii */
            Temp &= 0x0f;
		if(Temp < 10)
                    Temp = Temp + 0x30;
                else
                    Temp = Temp + 0x37;
               
             while(!(AT91C_BASE_SPI1->SPI_SR & 0x00000002));   
             AT91C_BASE_SPI1->SPI_TDR |= 0x00000FFF & value;
             Mask = Mask >> 4;
        }
          
}

⌨️ 快捷键说明

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