欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: exynos_4412.h流水燈程序分享 [打印本頁]

作者: weres    時間: 2019-9-8 12:10
標題: exynos_4412.h流水燈程序分享
#include "exynos_4412.h"

void do_irq()
{
        // 獲取中斷號
        unsigned int irq_num = CPU0.ICCIAR & 0x3ff;
        switch(irq_num)
        {
        case 57:
                printf("This interrupt id is %d\n", irq_num);
                PWM.TCON = PWM.TCON ^ 0x1;
                EXT_INT41_PEND = 0x1 << 1;                // 清pend(置1清0)
                ICDICPR.ICDICPR1 = 0x1 << 25;        // 清gic
                break;
        case 58:
                        printf("This interrupt id is %d\n", irq_num);
                        GPX2.DAT = GPX2.DAT ^ (0x1 << 7);
                        EXT_INT41_PEND = 0x1 << 2;                // 清pend(置1清0)
                        ICDICPR.ICDICPR1 = 0x1 << 26;        // 清gic
                        break;
        default:
                printf("error!\n");
                break;
        }

        // 把處理器中處理完的中斷號返回給gic
        // 告訴gic該中斷處理結束,可以送入下一個pending進入
        CPU0.ICCEOIR = (CPU0.ICCEOIR & ~(0x3ff)) | irq_num;
}

void peripheral_init()
{
        GPX1.CON = 0xff << 4;                // 配置GPIO為外部中斷
        EXT_INT41_CON = 0x22 << 4;        // 下降沿觸發中斷
        EXT_INT41_MASK = 0x0;                // 使能相應外設
}

void gic_init()
{
        ICDISER.ICDISER1 = 0x3 << 25;                // 使能按鍵中斷號
        ICDIPTR.ICDIPTR14 = 0x0101 << 8;         // 選擇cpu接口
        ICDDCR = 0x1;                                                // 使能中斷到分配器
        CPU0.ICCICR = 0x1;                                 // 把中斷從cpu接口送入處理器
        // 屏蔽中斷優先級,255表示所有中斷都允許通過
        CPU0.ICCPMR = 0xff;
}

void mydelay_ms(int ms)
{
        int i, j;
        while(ms--)
        {
                for (i = 0; i < 5; i++)
                        for (j = 0; j < 500; j++);
        }
}

void pwm_init()
{
        GPD0.CON = 0x2;        // GPIO配置為TOUT_0
        PWM.TCNTB0 = 1000;
        PWM.TCMPB0 = 500;
        PWM.TCFG0 = 0x63;        // 預分頻值為99 -> 100
        PWM.TCFG1 = 0x3;        // 二級分頻為1/8
        PWM.TCON = 0x2;                // 手動裝載
        PWM.TCON = 0x8;                // 自動重裝
}

void led_init()
{
        GPX2.CON = GPX2.CON & (0xf << 28) | (0x1 << 28);
}

int main()
{
        peripheral_init();
        gic_init();
        pwm_init();
        led_init();
        int i = 0;
        while(1)
        {
                mydelay_ms(800);
        }

        return 0;
}






歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1