6

我是嵌入式编程的初学者。我正在研究起重机板(ARM Cortex A8)。源代码可在github获得。

我创建了一个 C 代码来使通过 GPIO 连接的外部 LED 闪烁。它可以在 u-boot 控制台中作为命令执行。目前,

我无法通过 Ctrl-C 停止 LED 的闪烁。
Ctrl-C 中断的编码在哪里?

ret=set_mmc_mux();
if(ret<0)
    printf("\n\nLED failed to glow!\n\n");
else{
        if(!omap_request_gpio(lpin))
    {
        omap_set_gpio_direction(lpin,0);

        for(i=1;i<21;i++)
        {
            ctr=0;
            if((i%2)==0)
            {
                num=num-1;
                omap_set_gpio_dataout(lpin,num);
            }
            else
            {
                num=num+1;
                omap_set_gpio_dataout(lpin,num);
            }

                    udelay(3000000);
             }

        }
}

请指导我。

4

2 回答 2

3

试试 ubootctrlc功能:

if(ctrlc())
    return 1; // or whatever else you want to do
于 2013-02-27T08:14:07.090 回答
1

您在低级别工作,因此您需要使用的方法也是低级别的:

  • 检查循环中的 UART“数据可用”标志 - 这非常依赖于硬件,但通常涉及读取寄存器、屏蔽一些位并查看是否设置了正确的位。
  • 如果数据可用,检查它是否是 CTRL-C ( 0x03) 字符,如果是则退出,如果不是则丢弃

现在看到了 nneonneo 的答案,我认为这就是ctrlc()函数的作用......

于 2013-02-27T10:56:00.753 回答