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