hal_gpio.c
来自「最新版IAR FOR ARM(EWARM)5.11中的代码例子」· C语言 代码 · 共 87 行
C
87 行
//-----------------------------------------------------------------------------
// HAL_GPIO
//-----------------------------------------------------------------------------
#include "hal_gpio.h"
//-----------------------------------------------------------------------------
void GPIO_Init (u8 dir)
{
GPIO->DIR = dir; //1=input, 0=output
CONFR->GLOBAL_CONTROL |= 0x1;
LEDs(~ALL_LEDs);
}
//-----------------------------------------------------------------------------
void LEDs (u8 value)
{
if (ValBit(value,0))
ClrBit(GPIO->DOUT0,0);
else
SetBit(GPIO->DOUT0,0);
if (ValBit(value,1))
ClrBit(GPIO->DOUT1,0);
else
SetBit(GPIO->DOUT1,0);
if (ValBit(value,2))
ClrBit(GPIO->DOUT2,0);
else
SetBit(GPIO->DOUT2,0);
if (ValBit(value,3))
ClrBit(GPIO->DOUT3,0);
else
SetBit(GPIO->DOUT3,0);
if (ValBit(value,4))
ClrBit(GPIO->DOUT4,0);
else
SetBit(GPIO->DOUT4,0);
if (ValBit(value,5))
ClrBit(GPIO->DOUT5,0);
else
SetBit(GPIO->DOUT5,0);
}
//-----------------------------------------------------------------------------
void LEDs_Toggle (u8 mask)
{
u8 nto_change = GPIO->DIN & (~mask); //not to change
u8 to_change = mask & (~(GPIO->DIN & (mask))); //to toggle
LEDs (~(nto_change |to_change));
}
//-----------------------------------------------------------------------------
void SnakeOnLEDs (s8 Delta, u8 ModeChange)
{
static u8 snake = 1;
static u8 mode = 1;
if (Delta > 0)
{
snake <<= 1;
if ((snake == 0) || (snake > 0x20))
snake = 1;
}
if (Delta < 0)
{
snake >>= 1;
if (snake == 0)
snake = 0x20;
}
if (ModeChange != 0)
mode ^= 1;
if (mode == 1)
LEDs (snake);
else
LEDs (snake ^ 0xFF);
}
//-----------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?