Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
risc-v_RISCV
中断嵌套nest
riscv ch32v103 对中断的处理,当有嵌套中断发生时是否会出错
发布于 2024-10-18 16:03:19 浏览:247
订阅该版
[tocm] # 使用rtstudio生成创建的工程如下 ![screenshot_图片.png](https://oss-club.rt-thread.org/uploads/20241018/3664d8f1b6f111d07086875701cb0463.png) 在drv_usart.c中 ```c void USART1_IRQHandler(void) __attribute__((interrupt())); void USART1_IRQHandler(void) { GET_INT_SP(); /* enter interrupt */ rt_interrupt_enter(); uart_isr(&serial1); /* leave interrupt */ rt_interrupt_leave(); FREE_INT_SP(); } #endif /* BSP_USING_UART1 */ ``` 这个中断代码编译出来的代码 ``` 0000443e
: 443e: 715d addi sp,sp,-80 4440: c686 sw ra,76(sp) 4442: c496 sw t0,72(sp) 4444: c29a sw t1,68(sp) 4446: c09e sw t2,64(sp) 4448: de22 sw s0,60(sp) 444a: dc26 sw s1,56(sp) 444c: da2a sw a0,52(sp) 444e: d82e sw a1,48(sp) 4450: d632 sw a2,44(sp) 4452: d436 sw a3,40(sp) 4454: d23a sw a4,36(sp) 4456: d03e sw a5,32(sp) 4458: ce42 sw a6,28(sp) 445a: cc46 sw a7,24(sp) 445c: ca72 sw t3,20(sp) 445e: c876 sw t4,16(sp) 4460: c67a sw t5,12(sp) 4462: c47e sw t6,8(sp) 4464: 34011173 csrrw sp,mscratch,sp 4468: 200014b7 lui s1,0x20001 446c: dd0fc0ef jal ra,a3c
4470: 63048793 addi a5,s1,1584 # 20001630
4474: 43a0 lw s0,64(a5) 4476: 52500593 li a1,1317 447a: 4808 lw a0,16(s0) 447c: 26e9 jal 4846
447e: c911 beqz a0,4492
4480: 4585 li a1,1 4482: 63048513 addi a0,s1,1584 4486: c16ff0ef jal ra,389c
448a: 4808 lw a0,16(s0) 448c: 52500593 li a1,1317 4490: 2eed jal 488a
4492: dd8fc0ef jal ra,a6a
4496: 34011173 csrrw sp,mscratch,sp 449a: 5472 lw s0,60(sp) 449c: 40b6 lw ra,76(sp) 449e: 42a6 lw t0,72(sp) 44a0: 4316 lw t1,68(sp) 44a2: 4386 lw t2,64(sp) 44a4: 54e2 lw s1,56(sp) 44a6: 5552 lw a0,52(sp) 44a8: 55c2 lw a1,48(sp) 44aa: 5632 lw a2,44(sp) 44ac: 56a2 lw a3,40(sp) 44ae: 5712 lw a4,36(sp) 44b0: 5782 lw a5,32(sp) 44b2: 4872 lw a6,28(sp) 44b4: 48e2 lw a7,24(sp) 44b6: 4e52 lw t3,20(sp) 44b8: 4ec2 lw t4,16(sp) 44ba: 4f32 lw t5,12(sp) 44bc: 4fa2 lw t6,8(sp) 44be: 6161 addi sp,sp,80 44c0: 30200073 mret ``` 这里的csrrw sp,mscratch,sp是将中断堆栈和线程堆栈指针切换是吗,如果是的话,切换后mscratch应该保存的是线程堆栈指针,假如在这之后发生了其他高优先级的中断,会不会同样执行上面的切换栈指针操作,如果是,那在高优先级的中断处理中,使用的堆栈指针不就变成了线程的堆栈地址了吗 有没有熟悉riscv的大佬给解惑一下
查看更多
rv666
认证专家
2024-10-18
用GDB调试人生
默认在触发中断后,首先关闭全局中断,所以不会触发嵌套,CH32V支持硬件压栈,可以参考STM32 Cortex-M 修改
1
个回答
默认排序
按发布时间排序
撰写答案
登录
注册新账号
关注者
0
被浏览
247
关于作者
快去买药
这家伙很懒,什么也没写!
提问
3
回答
6
被采纳
0
关注TA
发私信
相关问题
1
studio能否支持risc-v的工程,包括调试。
2
移植rt-nano至risc-v时,无法在main函数创建用户线程
3
risc-v移植rtthread,程序莫名跳转到异常Exception
4
GD32VF103出现to free a bad data block:错误
5
rtt os riscv Store address misaligned异常
6
仅实现机器模式的芯片是否可以移植RT-THREAD系统
7
nano版本移植finsh(基于risc-v)
8
C++在多核下cout打印引起崩溃
9
RT-SMART求助
10
RT-Thread在RISC-V架构的芯片上有成熟的市场项目吗?
推荐文章
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
[E/app.filesystem] SD card mount to '/sdcard' failed!
2
单片机也能聊天?RT-Thread上跑通大语言模型
3
【RT-Thread】【ci】【scons】将ci.attachconfig.yml和scons结合使用
4
Rt-thread中OTA下载后,bootloader不搬程序
5
ulog 日志 LOG_HEX 输出时间改为本地日期时间
热门标签
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
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
cubemx
PWM
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
出出啊
1518
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
548
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
3
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部