dzh128@126.com 发表于 2012-12-16 17:40

ucos-ii lpc2138的定时中断怎么进入不了

staticvoidTmr_TickInit (void)
{
    CPU_INT32Upclk_freq;
    CPU_INT32Utmr_reload;

                                                                /* VIC TIMER #0 Initialization                              */
    VICIntSelect &= ~(1 << VIC_TIMER0);                         /* Enable interrupts                                        */
    VICVectAddr2= (CPU_INT32U)Tmr_TickISR_Handler;            /* Set the vector address                                 */
    VICVectCntl2= 0x20 | VIC_TIMER0;                        /* Enable vectored interrupts                               */
    VICIntEnable= (1 << VIC_TIMER0);                        /* Enable Interrupts                                        */

    pclk_freq   = BSP_CPU_PclkFreq();
    tmr_reload    = pclk_freq / OS_TICKS_PER_SEC;
    T0TCR         = 0;                                          /* Disable timer 0.                                       */
    T0PC          = 0;                                          /* Prescaler is set to no division.                         */

    T0MR0         = tmr_reload;
    T0MCR         = 3;                                          /* Interrupt on MR0 (reset TC)                              */

    T0CCR         = 0;                                          /* Capture is disabled.                                     */
    T0EMR         = 0;                                          /* No external match output.                              */
    T0TCR         = 0x01;                                          /* Enable timer 0                                           */
}
void Tmr_TickISR_Handler (void)
{
    T0IR = 0xFF;                                                /* Clear timer #0 interrupt                                 */
    //LED_ON();
    OSTimeTick();                                             /* Call uC/OS-II's OSTimeTick()                           */
}
前一个函数式设置定时器0,后一个是服务子程序,uc编译和运行已经没问题了,但是tick总是为零,没有调度其他任务,iar观测第一次运行任务切换次数3次,清零后任务切换次数为0,我怀疑是 定时器0没有进中断,没有系统时钟的原因,但是看上边的设置没有看出问题,请高手赐教

dzh128@126.com 发表于 2012-12-16 18:55

自己做个沙发,顶下

dzh128@126.com 发表于 2012-12-16 18:56

等待高手中。。。。。。。。。。

xlhtracy 发表于 2012-12-17 13:15

路过帮顶

dzh128@126.com 发表于 2012-12-17 18:15

依然等待高手,谢谢楼上帮顶 哈哈

airwill 发表于 2012-12-18 13:42

lpc2138 是 ARM7TDMI-S 内核的 CPU.
void Tmr_TickISR_Handler (void) 这样定义中断函数是不行的.
要用 __irq关键词定义中断函数.

haitao10086 发表于 2012-12-20 16:55

13039826907 发表于 2019-8-5 17:43

airwill 发表于 2012-12-18 13:42
lpc2138 是 ARM7TDMI-S 内核的 CPU.
void Tmr_TickISR_Handler (void) 这样定义中断函数是不行的.
要用 __i ...

哈哈谢谢谢谢

Synwit华芯微特 发表于 2019-8-7 11:30

LPC2138,很早之前的ARM7产品了,现在新产品还用这个?

建议切换到Cortex-M4,

airwill 发表于 2019-8-10 18:45

据称 这个器件有些问题哦,也很久了,不希望现在再使用了
页: [1]
查看完整版本: ucos-ii lpc2138的定时中断怎么进入不了