yangjie
yangjie - 认证专家
This guy hasn't written anything yet

注册于 3 years ago

回答
378
文章
2
关注者
14

uartconfig是通用的,估计和某个芯片冲突了

删除pks文件夹里面的 .git

代码块按钮image.png

不带格式:

int main(void)
{
    rt_uint32_t count = 1;

    rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT);
    rt_kprintf("hello\n");
    while(count++)
    {
        rt_thread_mdelay(1000);
        rt_pin_write(LED_PIN, PIN_HIGH);
        rt_thread_mdelay(1000);
        rt_pin_write(LED_PIN, PIN_LOW);
    }
    return RT_EOK;
}

c格式:

int main(void)
{
    rt_uint32_t count = 1;

    rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT);
    rt_kprintf("hello\n");
    while(count++)
    {
        rt_thread_mdelay(1000);
        rt_pin_write(LED_PIN, PIN_HIGH);
        rt_thread_mdelay(1000);
        rt_pin_write(LED_PIN, PIN_LOW);
    }
    return RT_EOK;
}

如果不懂,把帖子拉倒最下面,黄色部分介绍markdown语法,点进去看看

线程优先级抢占决定的哪个线程先运行。

先解释运行过程:
main 函数 优先级 20 ,先创建一个优先级3并启动(优先级高),之后就会切换到优先级3的线程,优先级3的线程挂起之后,才会运行main,接着创建优先级为2的线程。

你说的这句话有误:
程序跑起来,receive线程会先跑到take信号量而阻塞。随后到send线程释放信号量并且继续跑到send的take信号量,这时候send的优先级比receive高,为何跑回receive来take信号量并打印Sucessful了呢?

应该为:
程序跑起来,receive线程会先跑到take信号量,此时不会阻塞,因为你初始化为1,会马上获取到信号量,然后向下运行,在LV3 delay的时候,会切换到mian创建send线程。后面的逻辑你自己可以理理。

如果你创建的两个线程优先级都低于20的,例如 25 26,那么运行过程就是:运行main,创建25 的线程并启动,优先级25低所以不切换,接着创建优先级为26 的线程并启动,main 线程运行结束退出。接下来开始调度系统中剩余的线程(包含 25 26),此时哪个优先级高就先运行哪个。

如果本身不支持,想自己增加支持,则需要把驱动文件和驱动框架文件增加进来,并增加相应的宏定义,稍微麻烦点

首先你需要保证 MAX30102_I2C_NAME 已被注册
list_device看下注册了哪些设备,没注册的是找不到的

yaffs package是社区贡献的,作者已经不维护了,可以在大约rtt 3.0版本上使用吧,需要看下提交记录了

回到
顶部

发布
问题

投诉
建议