📄 gpio.c
字号:
#include "gpio.h"
void init_gpio(void)
{
// enable PB1~PB3 input buffer
PORTFIO_INEN = 0x1c;
// make LED1~LED6 as output
PORTFIO_DIR = 0x0fc0;
// make LED1~LED6 off
PORTFIO_CLEAR |= 0x0fc0;
// make PB1~PB3 edge interrupt trigger
PORTFIO_EDGE = 0x1c;
// make PB1~PB3 interrupt enabled
PORTFIO_MASKA_SET = 0x1c;
}
#include <stdio.h>
void sys_button_handler(void)
{
BOOL bHasEvent = FALSE;
EVENT_MSG msg = 0UL;
EVENT_MSG evt = LED6_TOGGLE; // initial judging LED is LED6
unsigned short bit = 0x4; // 0100B, PB1
ERR i;
unsigned short data = PORTFIO;
PORTFIO_CLEAR = 0x1c; // clear all PB interrupt requests
PUSH_LC0();
for(i=0; i<3; i++)
{
if(data & bit)
{
bHasEvent = TRUE;
msg |= evt;
}
evt >>= 1;
bit <<= 1;
}
POP_LC0();
if(bHasEvent)
{
sig_event(MSG_PORTFG_A_INT);
i = post_message(MSG_PORTFG_A_INT, (void*)msg);
if(i != VALID_SUCCESS)
puts("message posting error!");
}
}
ERR msg_button_event_handler(void *param)
{
int i;
EVENT_MSG bit = LED6_TOGGLE;
unsigned short led = 0x0800; // LED6
EVENT_MSG msg = (EVENT_MSG)param;
// 3 button events
for(i=0; i<3; i++)
{
if(msg & bit)
PORTFIO_TOGGLE = led;
bit >>= 1;
led >>= 1;
}
return VALID_SUCCESS;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -