您尚未登录。

楼主 # 2021-11-26 14:15:52

akinggw
会员
注册时间: 2020-04-02
已发帖子: 25
积分: 34.5

关于实时操作系统定时器中断求助,定时器不工作

最近一直在看实时操作系统工作原理,看了一下《FreeRTOS内核实现与应用开发实战指南:基于STM32》对freertos和实时操作系统有了一个大概了解。但freertos代码还是太多,功能也多。
于是在github上找到了atomthreads,地址是https://github.com/kelvinlawson/atomthreads。
这个系统非常小巧,但实时操作系统该有的都有了,对于想学习实时操作系统原理的同学非常有帮助。
它的ports中有qemu模拟器的,在qemu_integratorcp目录,不用板子也能愉快的玩耍。
但这个代码有点老了,都是5,6年前的代码,我在用现在的qemu版本模拟它的程序时,发现定时器无法起作用,导致任务无法切换,具体开启定时器的代码在:
int
low_level_init (void)
{
    printf("low_level_init\n");

    board_pic->IRQ_ENABLECLR = ICP_PIC_IRQ_TIMERINT0 ;
    board_timer_0->INTCLR = 1 ;
    board_pic->IRQ_ENABLESET |= ICP_PIC_IRQ_TIMERINT0 ;

    board_timer_0->LOAD = TIMER0_CLOCK_SPEED / SYSTEM_TICKS_PER_SEC ;
    board_timer_0->BGLOAD = TIMER0_CLOCK_SPEED / SYSTEM_TICKS_PER_SEC ;
    board_timer_0->CONTROL = ICP_TIMER_CONTROL_ENABLE |
                            ICP_TIMER_CONTROL_MODE |
                            ICP_TIMER_CONTROL_IE |
                            ICP_TIMER_CONTROL_TIMER_SIZE ;             

    char str[128];
    sprintf(str,"low_level_init2:%d\n",(unsigned int)board_pic->IRQ_STATUS);
    printf(str);                       

    return 0 ;
}

qemu模拟的芯片是ARM926EJ-S,对这个型号的芯片如何开启定时器不太了解,希望大神能帮忙解决一下,谢谢!

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn