Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
rtt在at91sam9260平台的运行问题
发布于 2011-02-23 10:26:22 浏览:19268
订阅该版
大家好,最近我把rt-thread-0.4.0移植到at91sam9260芯片上,并成功跑起来了,但是在这个过程中遇到了一些问题,请各位指教。 目前开启了三个测试线程,情况如下: 线程一:点亮led灯 线程二:打印串口信息 线程三:获取按键中断发的邮箱信号,并打印串口信息 代码如下: ```static rt_thread_t key_tid1 = RT_NULL; /* 邮箱控制块 */ static struct rt_mailbox mb; /* 用于放邮件的内存池 */ static char mb_pool[16]; static char mb_str1[] = "PC15"; static char mb_str2[] = "PC7"; /* 线程1入口 */ static void key_thread_entry(void* parameter) { unsigned char* str; while (1) { rt_kprintf("thread1: try to recv a mail "); /* 从邮箱中收取邮件 */ if (rt_mb_recv(&mb, (rt_uint32_t*)&str, RT_WAITING_FOREVER) == RT_EOK) { rt_kprintf("KEY pressed on PC15:%s ", str); /* 延时10个OS Tick */ //rt_thread_delay(10); } } } void rt_pioc_handler(int vector) { rt_uint32_t status; status = at91_sys_read(AT91_PIOC+0x4c); if (status & (1<<15)) { //rt_kprintf("KEY pressed on PC15 "); rt_mb_send(&mb, (rt_uint32_t)&mb_str1[0]); } if (status & (1<<7)) { //rt_kprintf("KEY pressed on PC7 "); rt_mb_send(&mb, (rt_uint32_t)&mb_str2[0]); } } void key_init(void) { at91_sys_write(AT91_PIOC, (1<<15)|(1<<7)); at91_sys_write(AT91_PIOC+0x14, (1<<15)|(1<<7)); at91_sys_write(AT91_PIOC+0x20, (1<<15)|(1<<7)); at91_sys_write(AT91_PIOC+0x40, (1<<15)|(1<<7)); at91_sys_write(AT91_PIOC+0x64, (1<<15)|(1<<7)); at91_sys_read(AT91_PIOC+0x4c); /* 初始化一个mailbox */ rt_mb_init(&mb, "key_mb", /* 名称是mbt */ &mb_pool[0], /* 邮箱用到的内存池是mb_pool */ sizeof(mb_pool)/4, /* 大小是mb_pool大小除以4,因为一封邮件的大小是4字节 */ RT_IPC_FLAG_FIFO); /* 采用FIFO方式进行线程等待 */ /* 创建线程1 */ key_tid1 = rt_thread_create("key", key_thread_entry, RT_NULL, /* 线程入口是thread1_entry, 入口参数是RT_NULL */ 512, 20, 10); if (key_tid1 != RT_NULL) rt_thread_startup(key_tid1); else rt_kprintf("start thread key failed "); rt_hw_interrupt_install(AT91SAM9260_ID_PIOC, rt_pioc_handler, RT_NULL); rt_hw_interrupt_umask(AT91SAM9260_ID_PIOC); } void rt_led_thread_entry(void* parameter) { rt_uint8_t cnt = 0; led_init(); while(1) { /* light on leds for one second */ rt_thread_delay(40); cnt++; if (cnt&0x01) led_on(1); else led_off(1); if (cnt&0x02) led_on(2); else led_off(2); if (cnt&0x04) led_on(3); else led_off(3); } } void rt_test_thread_entry(void *parameter) { while(1) { rt_kprintf("test thread enter "); rt_thread_delay(400); } } int rt_application_init() { rt_thread_t led_thread; rt_thread_t test_thread; #if (RT_THREAD_PRIORITY_MAX == 32) led_thread = rt_thread_create("led", rt_led_thread_entry, RT_NULL, 512, 20, 20); test_thread = rt_thread_create("test", rt_test_thread_entry, RT_NULL, 512, 24, 20); #else led_thread = rt_thread_create("led", rt_led_thread_entry, RT_NULL, 512, 200, 20); test_thread = rt_thread_create("test", rt_test_thread_entry, RT_NULL, 512, 240, 20); #endif if(led_thread != RT_NULL) rt_thread_startup(led_thread); if(test_thread != RT_NULL) rt_thread_startup(test_thread); key_init(); return 0; } ``` 目前遇到的问题是在频繁按键后,中断会消失,即按键不会进入中断,正常情况下在按键过程中,在按键信号的上升沿和下降沿都会产生中断。 串口打印信息如下: ```thread1: try to recv a mail finsh>>test thread enter finsh>>test thread enter KEY pressed on PC15:PC15 thread1: try to recv a mail KEY pressed on PC15:PC15 thread1: try to recv a mail KEY pressed on PC15:PC15 thread1: try to recv a mail KEY pressed on PC15:PC15 thread1: try to recv a mail KEY pressed on PC15:PC15 thread1: try to recv a mail KEY pressed on PC15:PC15 thread1: try to recv a mail KEY pressed on PC15:PC15 thread1: try to recv a mail KEY pressed on PC15:PC15 thread1: try to recv a mail KEY pressed on PC15:PC15 thread1: try to recv a mail test thread enter KEY pressed on PC15:PC15 thread1: try to recv a mail KEY pressed on PC15:PC15 thread1: try to recv a mail KEY pressed on PC15:PC15 thread1: try to recv a mail KEY pressed on PC15:PC15 thread1: try to recv a mail KEY pressed on PC15:PC15 thread1: try to recv a mail test thread enter ------------> 之后无论怎样按键都不会进入中断处理函数,但是其他的功能都正常, test thread enter 不过有个奇怪的现象,在finsh中多次执行list_thread()命令会导致idle线程栈溢出死机 test thread enter test thread enter test thread enter test thread enter ``` 除此之外,不进行任何按键动作,只是在finsh终端中执行list_thread()命令,会出现idle线程栈溢出的警告信息,多次执行后会出现栈溢出死机。 串口打印信息如下: ```finsh>> finsh>>list_thread() thread pri status sp stack size max used left tick error -------- ---- ------- ---------- ---------- ---------- ---------- --- tidle 0xff ready 0x0000007c 0x00000100 0x000000f4 0x0000001e 000 timer 0x08 suspend 0x00000094 0x00000200 0x000000e4 0x00000008 000 tshell 0x14 ready 0x000001cc 0x00001000 0x0000024c 0x00000009 -04 key 0x14 suspend 0x000000ac 0x00000200 0x000000ac 0x00000008 000 test 0xf0 suspend 0x000000a4 0x00000200 0x000000a4 0x00000014 000 led 0xc8 suspend 0x000000ac 0x00000200 0x000000ac 0x00000014 000 0, 0x00000000 finsh>>list_thread() thread pri status sp stack size max used left tick error -------- ---- ------- ---------- ---------- ---------- ---------- --- tidle 0xff ready 0x0000007c 0x00000100 0x000000f4 0x0000000b 000 timer 0x08 suspend 0x00000094 0x00000200 0x000000e4 0x00000008 000 tshell 0x14 ready 0x000000a4 0x00001000 0x0000024c 0x00000004 -04 key 0x14 suspend 0x000000ac 0x00000200 0x000000ac 0x00000008 000 test 0xf0 suspend 0x000000a4 0x00000200 0x000000a4 0x00000014 000 led 0xc8 suspend 0x000000ac 0x00000200 0x000000ac 0x00000014 000 0, 0x00000000 finsh>>test thread enter finsh>>list_thread() thread pri status sp stack size max used left tick error -------- ---- ------- ---------- ---------- ---------- ---------- --- tidle 0xff ready 0x00000054 0x00000100 0x000000f4 0x00000018 000 timer 0x08 suspend 0x00000094 0x00000200 0x000000e4 0x00000008 000 tshell 0x14 ready 0x000000a4 0x00001000 0x0000024c 0x00000009 -04 key 0x14 suspend 0x000000ac 0x00000200 0x000000ac 0x00000008 000 test 0xf0 suspend 0x000000a4 0x00000200 0x000000a4 0x00000014 000 led 0xc8 ready 0x000000ac 0x00000200 0x000000ac 0x00000014 -02 0, 0x00000000 finsh>>list_thread() thread pri status sp stack size max used left tick error -------- ---- ------- ---------- ---------- ---------- ---------- --- tidle 0xff ready 0x0000007c 0x00000100 0x000000f4 0x0000001c 000 timer 0x08 suspend 0x00000094 0x00000200 0x000000e4 0x00000008 000 tshell 0x14 ready 0x000000a4 0x00001000 0x0000024c 0x00000002 -04 key 0x14 suspend 0x000000ac 0x00000200 0x000000ac 0x00000008 000 test 0xf0 suspend 0x000000a4 0x00000200 0x000000a4 0x00000014 000 led 0xc8 ready 0x000000ac 0x00000200 0x000000ac 0x00000014 -02 0, 0x00000000 finsh>>list_thread() thread pri status sp stack size max used left tick error -------- ---- ------- ---------- ---------- ---------- ---------- --- tidle 0xff ready 0x00000070 0x00000100 0x000000f4 0x00000010 000 timer 0x08 suspend 0x00000094 0x00000200 0x000000e4 0x00000008 000 tshell 0x14 ready 0x000000a4 0x00001000 0x0000024c 0x00000006 -04 key 0x14 suspend 0x000000ac 0x00000200 0x000000ac 0x00000008 000 test 0xf0 suspend 0x000000a4 0x00000200 0x000000a4 0x00000014 000 led 0xc8 ready 0x000000ac 0x00000200 0x000000ac 0x00000014 -02 0, 0x00000000 finsh>>list_thread() thread pri status sp stack size max used left tick error -------- ---- ------- ---------- ---------- ---------- ---------- --- tidle 0xff ready 0x0000006c 0x00000100 0x000000f4 0x00000007 000 timer 0x08 suspend 0x00000094 0x00000200 0x000000e4 0x00000008 000 tshell 0x14 ready 0x000000a4 0x00001000 0x0000024c 0x00000009 -04 key 0x14 suspend 0x000000ac 0x00000200 0x000000ac 0x00000008 000 test 0xf0 suspend 0x000000a4 0x00000200 0x000000a4 0x00000014 000 led 0xc8 suspend 0x000000ac 0x00000200 0x000000ac 0x00000014 000 0, 0x00000000 finsh>>test thread enter finsh>>list_thread()warning: tidle stack is close to end of stack address. thread:tidle stack overflow thread pri status sp stack size max used left tick error -------- ---- ------- ---------- ---------- ---------- ---------- --- tidle 0xff ready 0x00000124 0x00000100 0x00000100 0x0000001f 000 timer 0x08 suspend 0x00000094 0x00000200 0x000000e4 0x00000008 000 tshell 0x14 suspend 0x000000a4 0x00001000 0x0000024c 0x00000006 000 key 0x14 suspend 0x000000ac 0x00000200 0x000000ac 0x00000008 000 test 0xf0 suspend 0x000000a4 0x00000200 0x000000a4 0x00000014 000 led 0xc8 suspend 0x000000ac 0x00000200 0x00000170 0x00000014 000``` 另外如果没有在finsh中执行list_thread(),就不会出现tidle线程栈溢出的情况。 请教一下,这些问题是什么原因导致? 谢谢! ![2440.jpg](https://oss-club.rt-thread.org/uploads/53_7f65cf77102e606085eae5ec57dc6cb7.jpg) 下载附件 [rtthread-0.4.0-for-at9260.tar.bz2](https://oss-club.rt-thread.org/uploads/2715_fd4412c113e0d4fdaa127bd3402ade41.bz2)
查看更多
30
个回答
默认排序
按发布时间排序
bernard
2011-02-23
这家伙很懒,什么也没写!
贴一份你的配置文件rtconfig.h。 现在idle线程栈用的已经比较多了,从你list_thread来看,最高点已经到了0xf4,而总的只有0x100。中断的问题,你是否在中断处理部分正确处理了?
weety
2011-02-23
这家伙很懒,什么也没写!
rtconfig.h的内容如下: /* RT-Thread config file */ #ifndef __RTTHREAD_CFG_H__ #define __RTTHREAD_CFG_H__ /* RT_NAME_MAX*/ #define RT_NAME_MAX 32 /* RT_ALIGN_SIZE*/ #define RT_ALIGN_SIZE 4 /* PRIORITY_MAX */ #define RT_THREAD_PRIORITY_MAX 256 /* Tick per Second */ #define RT_TICK_PER_SECOND 100 /* SECTION: RT_DEBUG */ /* Thread Debug */ #define RT_DEBUG //#define SCHEDULER_DEBUG /* #define RT_THREAD_DEBUG */ #define RT_USING_OVERFLOW_CHECK /* Using Hook */ #define RT_USING_HOOK /* Using Software Timer */ #define RT_USING_TIMER_SOFT #define RT_TIMER_THREAD_PRIO 8 #define RT_TIMER_THREAD_STACK_SIZE 512 #define RT_TIMER_TICK_PER_SECOND 10 /* SECTION: IPC */ /* Using Semaphore */ #define RT_USING_SEMAPHORE /* Using Mutex */ #define RT_USING_MUTEX /* Using Event */ #define RT_USING_EVENT /* Using MailBox */ #define RT_USING_MAILBOX /* Using Message Queue */ #define RT_USING_MESSAGEQUEUE /* SECTION: Memory Management */ /* Using Memory Pool Management*/ #define RT_USING_MEMPOOL /* Using Dynamic Heap Management */ #define RT_USING_HEAP /* Using Small MM */ /* #define RT_USING_SMALL_MEM */ /* Using SLAB Allocator */ #define RT_USING_SLAB /* SECTION: Device System */ /* Using Device System */ #define RT_USING_DEVICE /* Using Module System */ #define RT_USING_MODULE #define RT_USING_LIBDL /* SECTION: Console options */ /* the buffer size of console */ #define RT_CONSOLEBUF_SIZE 128 /* SECTION: finsh, a C-Express shell */ /* Using FinSH as Shell*/ #define RT_USING_FINSH /* Using symbol table */ #define FINSH_USING_SYMTAB #define FINSH_USING_DESCRIPTION #define FINSH_THREAD_STACK_SIZE 4096 /* SECTION: the runtime libc library */ /* the runtime libc library */ #define RT_USING_NEWLIB #define RT_USING_PTHREADS /* SECTION: C++ support */ /* Using C++ support */ /* #define RT_USING_CPLUSPLUS */ /* SECTION: Device filesystem support */ /* using DFS support */ #define RT_USING_DFS #define RT_USING_DFS_ELMFAT /* use long file name feature */ #define RT_DFS_ELM_USE_LFN 1 /* the max number of file length */ #define RT_DFS_ELM_MAX_LFN 128 /* #define RT_USING_DFS_YAFFS2 */ #define RT_USING_DFS_DEVFS #define RT_USING_DFS_NFS #define RT_NFS_HOST_EXPORT "192.168.1.5:/" #define DFS_USING_WORKDIR /* the max number of mounted filesystem */ #define DFS_FILESYSTEMS_MAX 4 /* the max number of opened files */ #define DFS_FD_MAX 16 /* the max number of cached sector */ #define DFS_CACHE_MAX_NUM 4 /* Enable freemodbus protocol stack*/ /* #define RT_USING_MODBUS */ #endif 另外时钟中断和串口中断都没有问题,现在就是这个GPIO中断有问题,我再看看还有没有需要注意的,谢谢!
bernard
2011-02-23
这家伙很懒,什么也没写!
RT_NAME_MAX很大啊, 溢出时, thread pri status sp stack size max used left tick error -------- ---- ------- ---------- ---------- ---------- ---------- --- tidle 0xff ready 0x00000124 0x00000100 0x00000100 0x0000001f 000 led 0xc8 suspend 0x000000ac 0x00000200 0x00000170 0x00000014 000 这两个线程比较奇怪,tidle满了,原来是0xf4。led线程增长也非常快。 你的编译参数呢?应该是GNU GCC吧,把rtconfig.py也贴一份。
weety
2011-02-23
这家伙很懒,什么也没写!
rtconfig.py内容如下: # toolchains options ARCH = 'arm' CPU = 'at91sam926x' TextBase = '0x20000000' CROSS_TOOL = 'gcc' if CROSS_TOOL == 'gcc': PLATFORM = 'gcc' EXEC_PATH = '/opt/arm-2010.09/bin' elif CROSS_TOOL == 'keil': PLATFORM = 'armcc' EXEC_PATH = 'E:/Keil' BUILD = 'debug' if PLATFORM == 'gcc': # toolchains PREFIX = 'arm-none-eabi-' #PREFIX = 'arm-none-linux-gnueabi-' CC = PREFIX + 'gcc' AS = PREFIX + 'gcc' AR = PREFIX + 'ar' LINK = PREFIX + 'gcc' TARGET_EXT = 'axf' SIZE = PREFIX + 'size' OBJDUMP = PREFIX + 'objdump' OBJCPY = PREFIX + 'objcopy' DEVICE = ' -mcpu=arm926ej-s' CFLAGS = DEVICE AFLAGS = ' -c' + DEVICE + ' -x assembler-with-cpp' + ' -DTEXT_BASE=' + TextBase LFLAGS = DEVICE + ' -Wl,--gc-sections,-Map=rtthread_at91sam9260.map,-cref,-u,_start -T at91sam9260_ram.ld' + ' -Ttext ' + TextBase CPATH = '' LPATH = '' if BUILD == 'debug': CFLAGS += ' -O0 -gdwarf-2' AFLAGS += ' -gdwarf-2' else: CFLAGS += ' -O2' POST_ACTION = OBJCPY + ' -O binary $TARGET rtthread.bin\n' + SIZE + ' $TARGET \n'
weety
2011-02-23
这家伙很懒,什么也没写!
另at91sam9260_ram.ld的内容如下: OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) SECTIONS { . = 0x20000000; . = ALIGN(4); .text : { *(.init) *(.text) *(.gnu.linkonce.t*) /* section information for finsh shell */ . = ALIGN(4); __fsymtab_start = .; KEEP(*(FSymTab)) __fsymtab_end = .; . = ALIGN(4); __vsymtab_start = .; KEEP(*(VSymTab)) __vsymtab_end = .; . = ALIGN(4); /* section information for modules */ . = ALIGN(4); __rtmsymtab_start = .; KEEP(*(RTMSymTab)) __rtmsymtab_end = .; } . = ALIGN(4); .rodata : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r*) *(.eh_frame) } . = ALIGN(4); .ctors : { PROVIDE(__ctors_start__ = .); KEEP(*(SORT(.ctors.*))) KEEP(*(.ctors)) PROVIDE(__ctors_end__ = .); } .dtors : { PROVIDE(__dtors_start__ = .); KEEP(*(SORT(.dtors.*))) KEEP(*(.dtors)) PROVIDE(__dtors_end__ = .); } . = ALIGN(4); .data : { *(.data) *(.data.*) *(.gnu.linkonce.d*) } . = ALIGN(4); .nobss : { *(.nobss) } . = 0x20300000; . = ALIGN(4); __bss_start = .; .bss : { *(.bss) } __bss_end = .; /* stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_info 0 : { *(.debug_info) } .debug_line 0 : { *(.debug_line) } .debug_pubnames 0 : { *(.debug_pubnames) } .debug_aranges 0 : { *(.debug_aranges) } _end = .; }
bernard
2011-02-23
这家伙很懒,什么也没写!
你的移植是否哪里没弄对?mini2440是ARM920T的平台,应该与ARM926EJ-S非常类似,在ARM920T上,idle线程占用情况如下:
weety
2011-02-23
这家伙很懒,什么也没写!
等会儿我再调试看看,有问题我会立即回复上来,谢谢!
weety
2011-02-23
这家伙很懒,什么也没写!
多次按键后中断消失问题原因已经找到了,当按键中断消失后,在finsh shell中手工读取PIO_ISR寄存器清除中断,然后再按键可以正常中断,但是在驱动中有读取PIO_ISR寄存器,不知道为什么出现没有清掉的情况,这个还需要查查。 关于tidle线程栈溢出的问题,目前还是不太明白。我在finsh shell中用键盘的方向键调出上次的命令执行,就会出现idle线程栈溢出的问题,但是每条命令手工敲上去执行却没有出现idle线程栈溢出的情况,根据现象暂时定为为用方向键调出finsh shell的历史命令执行时会出现问题,包括像 finsh>>int *p=0xfffff84c 'L', -1972, 0xfffff84c finsh>>*p '@', -63168, 0xffff0940 finsh>>*p <-----------------用方向键调出 '@', -63168, 0xffff0940 finsh>>*p '@', -63168, 0xffff0940 finsh>>*pwarning: tidle stack is close to end of stack address. 这样也会出现警告,多次也会出现栈溢出死机的情况。 这种情况bernard老大有没有遇到这种情况?
weety
2011-02-24
这家伙很懒,什么也没写!
多次按键中断消失的问题已经解决,需要修改中断处理函数,改动如下: void rt_pioc_handler(int vector) { rt_uint32_t status; while (1) { status = at91_sys_read(AT91_PIOC+0x4c) & at91_sys_read(AT91_PIOC+0x48); if(!status) break; if (status & (1<<15)) { rt_mb_send(&mb, (rt_uint32_t)&mb_str1[0]); } if (status & (1<<7)) { rt_mb_send(&mb, (rt_uint32_t)&mb_str2[0]); } } } 目前就是idle栈溢出问题了,目前发现在操作finsh shell时会出现问题,主要是用调用历史命令容易出问题,没有操作finsh shell时连续运行了几个小时没有出现问题。目前定位为与finsh shell有关,但是为什么在操作finsh shell时导致idle栈溢出,请高手指点指点,谢谢!
bernard
2011-02-24
这家伙很懒,什么也没写!
你先把idle线程栈加大一些试试,然后再判断它是一个栈溢出问题还是一个内存越界问题。 另外就是,当溢出时,可以把idle相关的栈信息、TCB信息都dump出来看看
撰写答案
登录
注册新账号
关注者
0
被浏览
19.3k
关于作者
weety
这家伙很懒,什么也没写!
提问
2
回答
60
被采纳
0
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
freemodbus主机在freertos的适配,参考rtthread例程
2
开源共生 商业共赢 | RT-Thread 2024开发者大会议程正式发布!
3
【24嵌入式设计大赛】基于RT-Thread星火一号的智慧家居系统
4
RT-Thread EtherKit开源以太网硬件正式发布
5
还在担心bsp不好维护吗?快使用yml管理主线bsp
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
a1012112796
20
个答案
3
次被采纳
张世争
12
个答案
3
次被采纳
踩姑娘的小蘑菇
7
个答案
3
次被采纳
用户名由3_15位
14
个答案
2
次被采纳
rv666
9
个答案
2
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
RTT_逍遥
1
篇文章
8
次点赞
大龄码农
1
篇文章
5
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部