Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
嵌入式技术综合讨论
关于RT-Thread的STM32移植遇到的调度问题
发布于 2012-08-05 20:52:10 浏览:5944
订阅该版
俺最近画了块stm32f103rbt6的板子,很喜欢咱们的rtt,用之,焊了两块板子,一块所以东西都焊上了,一块只弄了个最小系统,我的板子没有用实时时钟,把rtt0.31版本中E:RT-Thread-0.3.1spstm3210project_led_simple这个例程根据自己的板子改了改,在元件焊完的板子上跑没有问题,很激动,又在只焊了最小系统的板子上调试,却碰到了问题,前面初始化没有问题,但执行完 rt_current_thread = to_thread; /* switch to new thread */////////////////////////////////////////////////////////// rt_hw_context_switch_to((rt_uint32_t)&to_thread->sp); /* never come back */ 这句后只回不来了,但停在了一个固定的地方,也不调度了 停在了start-rvds.s的 CAN2_SCE_IRQHandler OTG_FS_IRQHandler B . ;就是停在这里不走了 ENDP ALIGN 很是郁闷,在MDK的模拟器里仿真调试没有问题,以为是这个只焊了最小系统的板子有问题,又焊了块最小系统的板子,还是这样,痛苦好多天,请各位大侠解救 [attachment=-2] [attach]0[/attach] 发现用的是MSP ,这又问题 [attachment=-1] 请各位大侠不吝赐教啊,谢谢了啊 ![停在这里.jpg](https://oss-club.rt-thread.org/uploads/3931_ae1c835cf73e059490ac2a02055456ea.jpg) ![正常寄存器.jpg](https://oss-club.rt-thread.org/uploads/3931_c7c989673523a93866877ee1aeb1c50e.jpg) ![问题寄存器.jpg](https://oss-club.rt-thread.org/uploads/3931_331c3430fc7f36b91e30cd79dc74ac3f.jpg) ![问题寄存器2.jpg](https://oss-club.rt-thread.org/uploads/3931_94169c06819e8d85f061f1b1239759a7.jpg) ![PendSV-SYtick.jpg](https://oss-club.rt-thread.org/uploads/3931_58c79cd506cd32e8c7f935e2fa0d4387.jpg) ![UART1.jpg](https://oss-club.rt-thread.org/uploads/3931_3f2eb8949cef60db1b0243fe444ef84e.jpg) 下载附件 [OYSTM32.pdf](https://oss-club.rt-thread.org/uploads/3931_899986948f868717207784ea58ba9ccb.pdf)
查看更多
9
个回答
默认排序
按发布时间排序
bernard
2012-08-05
这家伙很懒,什么也没写!
因为你触发了其他中断,而这个中断没有服务例程,所以进入了STM32中的固定死循环中。
aozima
2012-08-05
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
0.3.1 不建议新用户使用了,可以使用1.0.2 。 如果只是 project_led_simple 例程,是没有打开其它中断的,如果没有修改过中断名称和中断服务函数的话。 可以使用这个小工具快速生成一个STM32F103的简单例程:[http://www.rt-thread.org/phpBB3/viewtopic.php?f=4&t=1201](RT-Thread工程向导),生成的工程可以先不修改任何代码。 注意: 工程向导里面的生成的工程是比较老的版本,不过可以用于快速验证。
pbwy123123
2012-08-05
这家伙很懒,什么也没写!
谢谢大侠给予的帮助,可我还是很疑惑,一样的PCB,一块全焊了,没有问题,一块只焊了个最小系统,就会有这么大的差别吗,我又想了一下,RTT所给的32的例程应该是移植好的,中断因该处理过了吧,还有,就算停在这里,那么还有systick吧,这个也会触发中断吧,这个是否可以把系统拉回正轨呢?? 百思不得其解,还请大侠没多多指教
pbwy123123
2012-08-11
这家伙很懒,什么也没写!
>0.3.1 不建议新用户使用了,可以使用1.0.2 。 > >如果只是 project_led_simple 例程,是没有打开其它中断的,如果没有修改过中断名称和中断服务函数的话。 > >可以使用这个小工具快速生成一个STM32F103的简单例程:[http://www.rt-thread.org/phpBB3/viewtopic.php?f=4&t=1201](RT-Thread工程向导),生成的工程可以先不修改任何代码。 > >注意: 工程向导里面的生成的工程是比较老的版本,不过可以用于快速验证。 --- 正如所说,我用工程向导生成一个最简单的工程,这回所有的板子都正常了,但还是弄不明白以前的为啥出现这种情况
pbwy123123
2012-08-11
这家伙很懒,什么也没写!
很想找出问题所在,自己也在不断的调试中学习,用以前的0.3版本,使用软件仿真调试的时候是没有问题的,但一旦用我的只焊了最小系统的板子,就会停在那个固定的地方,跟踪了一下过程,发现在 ``` void rt_system_scheduler_start() { 。。。 /* switch to new thread */////////////////////////////////////////////////////////// rt_hw_context_switch_to((rt_uint32_t)&to_thread->sp); /* never come back */ } ``` 进入rt_hw_context_switch_to((rt_uint32_t)&to_thread->sp);中 ``` rt_hw_context_switch_to PROC EXPORT rt_hw_context_switch_to ; set to thread LDR r1, =rt_interrupt_to_thread STR r0, [r1] ; set from thread to 0 LDR r1, =rt_interrupt_from_thread MOV r0, #0x0 STR r0, [r1] ; set interrupt flag to 1 LDR r1, =rt_thread_switch_interrput_flag MOV r0, #1 STR r0, [r1] ; set the PendSV exception priority LDR r0, =NVIC_SYSPRI2 LDR r1, =NVIC_PENDSV_PRI STR r1, [r0] ; trigger the PendSV exception (causes context switch) LDR r0, =NVIC_INT_CTRL LDR r1, =NVIC_PENDSVSET STR r1, [r0] ; enable interrupts at processor level CPSIE I ; ``` 正常情况下开了中断后应该进入void rt_hw_timer_handler(void),然后开始调度,但是我的却接着往下执行,不理解 ``` ; never reach here! ENDP ; compatible with old version rt_hw_interrupt_thread_switch PROC EXPORT rt_hw_interrupt_thread_switch BX lr NOP ENDP END ``` 现在的寄存器变成这样的了 [attach]0[/attach]
bernard
2012-08-11
这家伙很懒,什么也没写!
这段代码是不应该单步调试的,因为单步调试系统默认是关闭中断单步走。 如果确实想这样调试,那么你在相应的地方设置个断点,然后再run,会自动停在断点的地方。
pbwy123123
2012-08-12
这家伙很懒,什么也没写!
>这段代码是不应该单步调试的,因为单步调试系统默认是关闭中断单步走。 > >如果确实想这样调试,那么你在相应的地方设置个断点,然后再run,会自动停在断点的地方。 --- 我把断点设在了rt_hw_context_switch_to PROC的入口处和最后的CPSIE I,观察了一下NVIC, [attach]1140[/attach] 出现了这种情况,这个应该是正常的,pendsv和systick,但是发现了一点 [attach]1141[/attach] UART1的中断被触发了,这个似乎是不应该出现的,莫非我的电路有问题,但是我的UART1管脚是悬空的 [attach]1142[/attach] 这是我的电路图,请高手看看 真如所说,是触发了一个53中断,就是UART1,所以导致挺在那里,这是我用0.3版本出现的问题, 我使用工程向导生成的工程的话是没有任何问题的,所有的板子都没事 还有,我硬件调试0.3版本的时候,为啥会出现单步时系统反应很迟钝的情况 我是嵌入式初级阶段,可能会犯很多低价错误,还请各位大侠不吝赐教,谢谢了
aozima
2012-08-13
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
>UART1的中断被触发了,这个似乎是不应该出现的,莫非我的电路有问题,但是我的UART1管脚是悬空的 --- 悬空的IO相当于一个天线,如果UART又使能的话,那么外部干扰将使UART接收到一些噪音数据。
pbwy123123
2012-08-14
这家伙很懒,什么也没写!
>>UART1的中断被触发了,这个似乎是不应该出现的,莫非我的电路有问题,但是我的UART1管脚是悬空的 > >--- > > >悬空的IO相当于一个天线,如果UART又使能的话,那么外部干扰将使UART接收到一些噪音数据。 --- 正如兄台所说,确实是因为这个原因,我焊的比较全乎的板子中UART1是接在PL2303上的,这个是没有问题的,那些我只焊了个最小系统的板子UART1是悬空的,所以会出问题,RTT通过UART1发送的话应该是通过查询方式,而此时UART1中断时开着的,如果接受到数据,就会进入中断服务,而UART1的中断服务是没写的我,所以就会进入默认的死循环,我用能正常工作的板子加RTT0.31,测试了一下,一旦我通过串口向板子发送数据,就会触发UART1中断,而进入死循环。我用工程向导生成的工程所以的板子能正常工作,没有问题,看来这个版本的串口处理和0.31不同,回头我再看看 至此我的问题解决了,感谢各位提供的帮助,我的经验还是很匮乏的,跟各位交流真的让我获益匪浅,谢谢了
撰写答案
登录
注册新账号
关注者
0
被浏览
5.9k
关于作者
pbwy123123
这家伙很懒,什么也没写!
提问
3
回答
8
被采纳
0
关注TA
发私信
相关问题
1
开新板块了! 迅速占领第一帖!
2
有想玩点阵做电子钟的没?手上有屏
3
LED点阵屏硬件保护研究笔记
4
USB相关、Android、Arduino
5
Arduino即将发布ARM平台新产品
6
关于开关电源的同步整流技术
7
rt_thread_wizard使用教程
8
[转]开源如何盈利
9
FM3系列MCU的IO操作笔记。
10
转一个xoolhaha 的寻一起开发的帖子
推荐文章
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
rt-thread 小内存算法源码分析
2
env中添加lvgl软件包后,keil编译包--c99错误
3
【NXP-MCXA153】 定时器驱动移植
4
GD32F450 看门狗驱动适配
5
【NXP-MCXA153】看门狗驱动移植
热门标签
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
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
18
个答案
1
次被采纳
红枫
8
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
11
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部