📄 os_rtc.c
字号:
#include "register_variant.h"
#define LED_CS2 (*((volatile unsigned short *)(0x08300000)))
#define KEY_VALUE (*(volatile unsigned char*)(switch_dummyAddress))
#define LAST_KEY_VAL (*(volatile unsigned char *)(buttonStatus))
#define LAST_LED_VAL (*(volatile unsigned char *)(ledStatusBuffer))
#define REG_ICPR (*(volatile unsigned long *)(int_ICPR))
#define REG_RTSR (*(volatile unsigned long *)(rtc_RTSR))
void led_statusSet()
{
LED_CS2 = LAST_LED_VAL;
}
int button_statusFetch(void)
{
char i=0,j=8,left_move=1;
i = ~KEY_VALUE;
if (i!=00)
{
for(;j>0;j--)
if (i & 0x1)
break;
else
{
i=i>>1;
left_move ++;
}
}
else
left_move =0;
return left_move;
}
void identify()
{
unsigned long enable_bit=0x40000000;
char right_move=4;
for(; right_move>0; right_move--)
if (REG_ICPR & enable_bit)
{
LAST_LED_VAL = (LAST_LED_VAL -1) ;
led_statusSet( );
REG_RTSR = REG_RTSR | 0x2;
break;
}
else
{
enable_bit = enable_bit >> 1;
}
}
void applicationmode()
{
int key_val = 0;
LAST_LED_VAL = 0x0ff;
led_statusSet() ;
while(1)
{
key_val = button_statusFetch();
if (key_val != 0)
{
switch(key_val)
{
case 8 :
REG_RTSR = 0xa;
;
break;
case 7:
REG_RTSR = 0x2;
LAST_LED_VAL = 0x0;
led_statusSet() ;
return;
break;
}
}
identify();
}
}
void dummyOs()
{
int led_sharp;
char button_val=0;
while(1)
{
led_sharp=ledShareInterval;
for(; led_sharp>0; led_sharp--)
{
button_val = button_statusFetch();
if (button_val != 0)
break;
}
if (LAST_KEY_VAL != button_val && button_val!=0) /*if the laster is same as the current value and key are pressed */
{
LAST_KEY_VAL = button_val;
applicationmode();
}
else
LAST_LED_VAL = ~LAST_LED_VAL;
led_statusSet();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -