njgwx 发表于 2012-7-3 08:21:44

RT-thread的RT_TICK_PER_SECOND设置疑惑?

       我有外部定时器TIMER中断是1MS中断采样一次,把RT-thread的RT_TICK_PER_SECOND 设为100,RT-thread的TICK为10MS,运行起来报错有一个线程堆栈溢出。是不是RT_TICK_PER_SECOND设置有问题?外部定时器TIMER中断太快是否对RT-thread的线程上下文切换有影响?

aozima 发表于 2012-7-3 08:54:11

记得有人开到9600直接模拟串口(STM32)。

“运行起来报错有一个线程堆栈溢出”
加大这个线程的栈然后用finsh查看最大用了多少。

tiancaigao7 发表于 2012-7-3 20:37:17

堆栈溢出是你线程栈设定的太小了,和系统的时间没有联系。你同股finsh调试看看线程最大的线程栈利用量,然后设定稍微大一点就可以。

yygg_you 发表于 2012-7-3 22:13:22

楼上两位说的对,和TICK配置没有联系
用finsh查看一下堆栈

njgwx 发表于 2012-7-5 11:44:57

finsh>>psr: 0x61000000
pc: 0x08003946
lr: 0x080042f5
r12: 0x00000000
r03: 0xffffffff
r02: 0x20000868
r01: 0x20000d30
r00: 0x20010e2e
hard fault on thread: encode
threadpristatus      sp   stack size max used   left tickerror
-------- ---- ------- ---------- ---------- ---------- ---------- ---
tidle    0x1f ready   0x00000058 0x00000100 0x00000058 0x00000009 000
tshell   0x14 suspend 0x00000088 0x00000800 0x00000088 0x0000000a 000
time   0x11 suspend 0x00000080 0x00000200 0x000000c4 0x00000005 000
USE_IF   0x10 suspend 0x00000098 0x00000200 0x00000098 0x00000005 000
encode   0x0e ready   0x00000090 0x00000200 0x00000090 0x00000001 000
key      0x0f suspend 0x00000078 0x00000100 0x00000078 0x00000005 000

加大线程堆栈·,还报错,这是什么错?

aozima 发表于 2012-7-5 12:00:48

r00: 0x20010e2e
10e2e == 67K,怀疑你有指针越界的情况,如果最大64K RAM的话。
页: [1]
查看完整版本: RT-thread的RT_TICK_PER_SECOND设置疑惑?