哪位路过帮解释下这段程序

liulixhao   2011-7-18 10:43 楼主
arm的一段程序尤其不理解HWREG(NVIC_SW_TRIG) = INT_GPIOA - 16;这句话是什么意思,中心思想 是想改变优先级但是不太理解
volatile unsigned long g_ulIndex;
volatile unsigned long g_ulGPIOa;
volatile unsigned long g_ulGPIOb;
volatile unsigned long g_ulGPIOc;

int main(void)
{
    //  防止JTAG失效,重要!
    jtagWait();

    IntMasterEnable();

    IntEnable(INT_GPIOA);
    IntEnable(INT_GPIOB);
    IntEnable(INT_GPIOC);


    IntPrioritySet(INT_GPIOA, 0x00);
    IntPrioritySet(INT_GPIOB, 0x00);
    IntPrioritySet(INT_GPIOC, 0x00);


    g_ulGPIOa = 0;
    g_ulGPIOb = 0;
    g_ulGPIOc = 0;
    g_ulIndex = 1;


    HWREG(NVIC_SW_TRIG) = INT_GPIOC - 16;


    if((g_ulGPIOa != 3) || (g_ulGPIOb != 2) || (g_ulGPIOc != 1))
    {
        while(1);
    }

    IntPrioritySet(INT_GPIOA, 0x80);
    IntPrioritySet(INT_GPIOB, 0x40);
    IntPrioritySet(INT_GPIOC, 0x00);

    g_ulGPIOa = 0;
    g_ulGPIOb = 0;
    g_ulGPIOc = 0;
    g_ulIndex = 1;

    HWREG(NVIC_SW_TRIG) = INT_GPIOC - 16;


    if((g_ulGPIOa != 3) || (g_ulGPIOb != 2) || (g_ulGPIOc != 1))
    {
         while(1);
    }


    IntPrioritySet(INT_GPIOA, 0x00);
    IntPrioritySet(INT_GPIOB, 0x20);
    IntPrioritySet(INT_GPIOC, 0x40);


    g_ulGPIOa = 0;
    g_ulGPIOb = 0;
    g_ulGPIOc = 0;
    g_ulIndex = 1;


    HWREG(NVIC_SW_TRIG) = INT_GPIOC - 16;

    if((g_ulGPIOa != 1) || (g_ulGPIOb != 2) || (g_ulGPIOc != 3))
    {
         while(1);
    }


    IntDisable(INT_GPIOA);
    IntDisable(INT_GPIOB);
    IntDisable(INT_GPIOC);


    IntUnregister(INT_GPIOA);
    IntUnregister(INT_GPIOB);
    IntUnregister(INT_GPIOC);

    IntMasterDisable();
    while(1)  ;

}

void GPIO_Port_A_ISR(void)
{

    g_ulGPIOa = g_ulIndex++;
}

void GPIO_Port_B_ISR(void)
{

    HWREG(NVIC_SW_TRIG) = INT_GPIOA - 16;


    g_ulGPIOb = g_ulIndex++;

}

void GPIO_Port_C_ISR(void)
{

    HWREG(NVIC_SW_TRIG) = INT_GPIOB - 16;

    g_ulGPIOc = g_ulIndex++;

}

回复评论 (1)

HWREG(NVIC_SW_TRIG) 里面是什么内容?
你可以查找一下看看优先级 的操作

HWREG(NVIC_SW_TRIG) = INT_GPIOB - 16 你就知道内容了
处处留心皆学问!
点赞  2011-7-18 13:20
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复