使按键能控制LED1,在此,要借助中断函数。找到KEY按键对应IO_26,LED1对应IO_25。
首先宏定义IO口:
#define PIN_LED 25
#define PIN_KEY 26
#define GPIO_LED 3
#define GPIO_KEY 2
使能中断:
plic_init();
sysctl_enable_irq();
fpioa_set_function(PIN_KEY, FUNC_GPIOHS2);
gpiohs_set_drive_mode(GPIO_KEY, GPIO_DM_INPUT);
gpiohs_set_pin_edge(GPIO_KEY, GPIO_PE_BOTH);//双边沿触发
gpiohs_set_irq(GPIO_KEY, 1, irq_gpiohs2);//设置高速GPIO的中断回调函数
设置LED1的IO口为高:
fpioa_set_function(PIN_LED, FUNC_GPIOHS3);
gpiohs_set_drive_mode(GPIO_LED, GPIO_DM_OUTPUT);
gpio_pin_value_t value = GPIO_PV_HIGH;
gpiohs_set_pin(GPIO_LED, value);
使LED1闪烁:
while (1)
{
sleep(1);
if (irq_flag)
gpiohs_set_pin(GPIO_LED, value = !value);
int val = gpiohs_get_pin(GPIO_KEY);
printf("The PIN is %d\n", val);
}
编写中断回调函数:
void irq_gpiohs