tyustli
tyustli
This guy hasn't written anything yet

注册于 2 years ago

回答
58
文章
9
关注者
2

这个和软件没有太大的关系,休眠的时候 CPU 会进入低功耗模式,这个时候软件应该就一个 LPTimer 在跑

一定要在中断中使用 printf 吗,这种使用方法是不推荐的,可以注册一个回调打印试试

参考一下这个配置:
rtthread 的源码和 packages 的源码都可以共用
image.png

rt_thread_t rt_thread_self(void)
{
#ifdef RT_USING_SMP
    rt_base_t lock;
    rt_thread_t self;

    lock = rt_hw_local_irq_disable();
    self = rt_cpu_self()->current_thread;
    rt_hw_local_irq_enable(lock);
    return self;
#else
    extern rt_thread_t rt_current_thread;

    return rt_current_thread;
#endif
}

系统调度还没有起来之前 rt_current_thread 这个全局变量是 RT_NULL

pwm_led_sample 里面是一个 while 循环,这个 while 循环是在 shell 线程里面的,所以循环下面的代码都无法执行了,楼主在 pwm_led_sample 里面新建一个线程就好了

这类 CPU 的中断是非向量中断,这类中断会在 vector_irq 里面调用这两个函数并进行中断的分发,可以参考:rt-thread/libcpu/arm/arm926/start_gcc.S 里面的 vector_irq 函数

回到
顶部

发布
问题

投诉
建议