Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
关于不能实时响应中断的问题
发布于 2018-10-22 08:46:05 浏览:2228
订阅该版
我用的是华芯微特SWM181芯片,运行在48MHz,搭载了RT-Thread V3.0.3系统,由于高速传输需要,串口波特率设为1Mbps,但现在程序大了以后问题就来了,经常会丢失接收数据,查到最后的原因是不能实时响应串口中断导致的,整个系统里面就2个中断,一个是串口接收中断,一个是 SysTick_Handler 中断,看了下 SysTick_Handler 的优先级,设置为 0xFF,已经是最低优先级,但用逻辑分析分析时,还是发现每隔1ms会有一次20~90us不等的时间,将串口接收中断推迟,于是接收FIFO就溢出,出现了丢数据的现象,1ms就是我设置的OS_Tick时间。 最后看了下 SysTick_Handler 中断调用函数里面的代码,有N次出现 level = rt_hw_interrupt_disable(); 语句,也就是关闭全局中断,导致进入 SysTick_Handler 后,无法响应其他中断,就导致了高波特率时,丢数据的现象。 请问有没有办法可以解决这个问题?是否可以屏蔽关中断的语句达到目的?这样会不会导致系统运行异常?其他还有什么办法能让系统实时响应中断呢?
查看更多
12
个回答
默认排序
按发布时间排序
还没想好
2018-10-22
这家伙很懒,什么也没写!
串口fifo中断阈值设置成多少?最好不要一个字符就产生一个中断。还有就是能不能使用DMA传输串口数据?
hxcnz
2018-10-22
这家伙很懒,什么也没写!
>串口fifo中断阈值设置成多少?最好不要一个字符就产生一个中断。还有就是能不能使用DMA传输串口数据? ... --- FIFO中断阈值2~7都试过,设2的时候好一点,但频繁中断开销太大,且没有根本解决问题,这款芯片没有DMA传串口数据。
还没想好
2018-10-22
这家伙很懒,什么也没写!
系统里面跑了多少个任务?定时器用了多少个?
hxcnz
2018-10-22
这家伙很懒,什么也没写!
>系统里面跑了多少个任务?定时器用了多少个? --- 9个任务,软件定时器25个
moss
2018-10-23
这家伙很懒,什么也没写!
如果FIFO有8个,串口每个字节11个位,8个字节88us 如果阈值设置成4的话,每44us一个串口中断,来中断后必须在44us内相应,否则溢出 OS_Tick可以设置成10ms,如果满足需求的话 降低timer线程的优先级,最好能降低数量
hxcnz
2018-10-23
这家伙很懒,什么也没写!
>如果FIFO有8个,串口每个字节11个位,8个字节88us >如果阈值设置成4的话,每44us一个串口中断,来中断后必须 ... --- 跟线程优先级没关系,是 SysTick_Handler 中断函数进入之后会关中断,导致没法响应其他中断。问题已经解决了,把 SysTick_Handler 里面所有的函数放到 CACHE 中,这样执行会快很多,出问题的概率就小很多了。
gpfrank
2018-11-01
这家伙很懒,什么也没写!
这个可能就是RT-THREAD唯一设计不好的地方。 使用开关全局中断。而且这个开关全局中断的时间不同平台完全不同。 (这里我一直觉得RT-THREAD设计最不好的地方。我尝试过不开关全局中断,一部分中断不再系统里,不调用系统函数。但是对RT不是太深入,所以这种改动是否OK,并没有验证)
hxcnz
2018-11-02
这家伙很懒,什么也没写!
>这个可能就是RT-THREAD唯一设计不好的地方。 >使用开关全局中断。而且这个开关全局中断的时间不同平台完全不 ... --- 是的,我不敢对系统修改不让关中断,怕对系统运行造成影响,现在唯一只能寄希望于用更快的主芯片,以便快速执行定时器中断函数。
noerr
2018-11-06
这家伙很懒,什么也没写!
有开硬件定时器么 改成软件定时
hxcnz
2018-11-12
这家伙很懒,什么也没写!
>有开硬件定时器么 改成软件定时 --- 没开硬件定时器,用的都是软件定时器
撰写答案
登录
注册新账号
关注者
1
被浏览
2.2k
关于作者
hxcnz
这家伙很懒,什么也没写!
提问
10
回答
37
被采纳
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
在用clangd开发RTT吗,快来试试如何简单获得清晰干净的工作区
2
GD32F450 片内 flash驱动适配
3
STM32H7R7运行CherryUSB
4
RT-Smart首次线下培训,锁定2024 RT-Thread开发者大会!
5
使用RC522软件包驱动FM1722
热门标签
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
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
6
次点赞
YZRD
2
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部