voidrt_ld3320_irq_pin_init(){rt_pin_mode(LD3320_IRQ,PIN_MODE_INPUT_PULLUP);rt_pin_attach_irq(LD3320_IRQ,PIN_IRQ_MODE_FALLING,rt_ld3320_isr,RT_NULL);rt_pin_irq_enable(LD3320_IRQ,PIN_IRQ_ENABLE);} SPI设备注册初始化: 代码语言:javascript 复制 voidrt_ld3320_init(int argc,char*argv...
在RT-Thread 使用中,往往都会定义RT_USING_TIMER_SOFT,使用软件定时器并且启动 SOFT_TIMER 模式 ,该模式被启用后,系统会在初始化时创建一个timer线程,用来对软件定时器经常管理,那么我们就通过源码来看看 RT-Thread 到底是如何操作的。 通过《RT-Thread 记录(二、RT-Thread 内核启动流程 — 启动文件和源码分析)》...
rt_thread_t thread2 = RT_NULL; /* 创建一个动态信号量,初始值是 0 */ dynamic_sem = rt_sem_create("dsem", 0, RT_IPC_FLAG_FIFO); if (dynamic_sem == RT_NULL) { rt_kprintf("create dynamic semaphore failed.\n"); return -1; } else { rt_kprintf("create done. dynamic semap...
2、线程的名称;线程名称的最大长度由 rtconfig.h 中定义的 RT_NAME_MAX 宏指定,多余部分会被自动截掉 3、线程入口函数 4、线程入口函数参数,没有就用 RT_NULL 5、线程栈起始地址,根据上面定义就是 &led1_thread_stack[0], 6、线程栈大小,单位是字节。根据上面定义就是 sizeof(led1_thread_stack), 在...
typedef struct rt_semaphore *rt_sem_t; 1. 2. 3. 4. 5. 6. 7. 8. struct rt_semaphore从rt_ipc_object派生而来,由IPC容器管理,信号量的最大值为 65535。 结构体struct rt_ipc_object parent定义如下: struct rt_object { char name[RT_NAME_MAX]; /* 内核对象名称 */ ...
rt_uint8_t flag) 1. 2. 3. 4. 参数name为消息队列名称;msg_size为队列中一条消息的长度,单位为字节;max_msgs为消息队列的最大个数;flag为消息队列的等待方式。 创建成功,返回消息队列的句柄;创建失败,则返回RT_NULL。 静态方式创建消息队列需要两步: ...
void *rt_realloc(void *rmem, rt_size_t newsize) 参数rmem为指向已分配的内存块指针;newsize为重新分配的内存大小,单位为字节。 分配成功,则返回重新分配的内存块地址;否则,返回RT_NULL。 3. 分配多个内存块 RT-Thread 也提供了从内存堆中分配连续内存的多个内存块的接口,其具体的函数原型如下: ...
rt_mb_create()函数的参数,name为邮箱名称;size表示邮箱容量;flag为邮箱的标志,取值为RT_IPC_FLAG_FIFO或RT_IPC_FLAG_PRIO。 邮箱创建成功,则返回邮箱控制块指针;创建失败,则返回RT_NULL。 静态方式创建邮箱需要两步:(1)定义一个邮箱控制块和一段存放邮件的缓冲区(2)对邮箱控制块进行初始化。
1、线程的名称;线程名称的最大长度由 rtconfig.h 中的宏 RT_NAME_MAX 指定,多余部分会被自动截掉 2、线程入口函数 3、线程入口函数参数,没有就用 RT_NULL 4、线程栈大小,单位是字节 5、线程的优先级。优先级范围根据系统配置情况(rtconfig.h 中的 RT_THREAD_PRIORITY_MAX 宏定义), ...
rt_init_thread_entry, //线程入口函数 RT_NULL, //线程入口参数 &thread1_stack[0], //线程栈地址 sizeof(thread1_stack), //线程栈大小 6, //线程优先级 10); //线程时间片 动态创建线程代码: 创建线程:rt_thread_create 启动线程:rt_thread_startup ...