OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 62952|回复: 56

STM32的RTC闹钟中断 总算整明白了

  [复制链接]

71

主题

183

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2013-1-29
在线时间
1 小时
发表于 2013-9-26 21:23:05 | 显示全部楼层 |阅读模式

现在用到了STM32的闹钟中断 去唤醒停机模式下的系统
看STM32的demo 里边写的明明白白的 到我的例程上就是不行

后来总结出来了 呵呵 STM32的Demo只是用到了闹钟中断函数RTCAlarm_IRQHandler() 并没有用到RTC全局中断RTC_IRQHandler()    好 那么我的问题就出在这里了

如果两个中断函数同时使用的话,我们必须这样设置才不会有漏洞  RTCAlarm_IRQHandler() 函数的优先级一定要高于RTC_IRQHandler()  

为什么?

原因如下:
1,产生闹钟中断的前一瞬间,一定产生了秒中断,那么会先执行RTC_IRQHandler() 中断函数, 在RTC_IRQHandler() 执行的过程中,闹钟中断标志又被挂起,

由于RTC_IRQHandler()是全局中断函数,必须清除所有的中断标志,程序才能退出该函数, 假如RTC_IRQHandler()  和RTCAlarm_IRQHandler() 是同样的优先级,

要想让程序退出RTC_IRQHandler() 函数,那么你必须清除闹钟中断标志(如果不清除闹钟中断标志,程序会死在RTC_IRQHandler() ), 这样问题又出现了,清除闹钟中断标志后,程序就不会进入RTCAlarm_IRQHandler(),那么RTCAlarm_IRQHandler()函数永远也不会被执行。

我们只有这样做
设置闹钟中断函数RTCAlarm_IRQHandler() 的优先级高于全局中断函数RTC_IRQHandler(),
 在执行全局中断函数RTC_IRQHandler() 的时候,如果产生闹钟中断,那么中断嵌套去执行RTCAlarm_IRQHandler(),执行完毕RTCAlarm_IRQHandler()后,再去执行RTC_IRQHandler() 。

代码如下:

static void RTC_NVIC_Config(void)
{ /*尼玛  闹钟中断的优先级必须必秒中断高
 闹钟中断和秒中断几乎同时到来 秒中断的处理函数 是RTC_IRQHandler()
 如果进入这个函数 那么要想从RTC_IRQHandler()退出  则必须清除所有中断标志
    (包括闹钟中断), 这样 闹钟中断标志被清除 则RTCAlarm_IRQHandler()函数肯定是进不去了
 如果不清楚闹钟中断标志 那么程序会死在RTC_IRQHandler()里边
 综上所述 那种中断必须能打断秒中断的执行 这样程序才能执行到RTCAlarm_IRQHandler()里边
   */
    NVIC_InitTypeDef NVIC_InitStructure;
 NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn;  //RTC全局中断
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; 
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; 
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  //使能该通道中断
 NVIC_Init(&NVIC_InitStructure);  

 NVIC_InitStructure.NVIC_IRQChannel = RTCAlarm_IRQn;  //闹钟中断
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //比RTC全局中断的优先级高
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; 
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 
 NVIC_Init(&NVIC_InitStructure);
}
static void RTC_Alarm_EXIT(void)
{
 EXTI_InitTypeDef EXTI_InitStructure;
 EXTI_ClearITPendingBit(EXTI_Line17);
 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Line = EXTI_Line17;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
 EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStructure);

}


void RTC_IRQHandler(void)
{
     if (RTC_GetITStatus(RTC_IT_SEC) != RESET)
    {
    }
    RTC_ClearITPendingBit(RTC_IT_SEC);
  RTC_WaitForLastTask();

}

void RTCAlarm_IRQHandler(void)
{     if(RTC_GetITStatus(RTC_IT_ALR) != RESET)
      {

      }
     EXTI_ClearITPendingBit(EXTI_Line17);
  RTC_WaitForLastTask();
  RTC_ClearITPendingBit(RTC_IT_ALR);
  RTC_WaitForLastTask();
 }

按照我理解的,就应该是这样,我也实际测试了,结果和预期的一样,呵呵 如果有不对的地方,欢迎拍砖。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2013-9-26 21:28:41 | 显示全部楼层
楼主这是F几啊?
F1的RTC只有一个中断服务函数哦
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

71

主题

183

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2013-1-29
在线时间
1 小时
 楼主| 发表于 2013-9-27 17:08:17 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我用的是TM32F103RBT6啊  这个我实验成功了 一个中断函数?? 原子哥看错了吧 
我现在的程序都能进去RTCAlarm_IRQHandler()函数 并且一直在运行
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2013-9-27 18:06:45 | 显示全部楼层
回复【3楼】langwanglx:
---------------------------------
嗯,我后面查了下,是对的,有2个服务函数。
我理解错了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

54

主题

537

帖子

0

精华

高级会员

Rank: 4

积分
797
金钱
797
注册时间
2012-2-27
在线时间
7 小时
发表于 2013-11-18 11:35:06 | 显示全部楼层
回复【楼主位】langwanglx:
---------------------------------
我这两天也遇到一个问题,先设置RTC基本配置,然后开启秒中断,之后开启闹钟中断,在设置闹钟值时候:
    RTC_ClearFlag(RTC_FLAG_SEC);
    while(RTC_GetFlagStatus(RTC_FLAG_SEC) == RESET);
    RTC_SetAlarm(RTC_GetCounter() + 5);
    RTC_WaitForLastTask();

最后一句程序就跑死了: RTC_WaitForLastTask();,
单独跑秒中断日历都是正常的,晶振也起振OK的。楼主有啥指导意见不?
回复 支持 反对

使用道具 举报

54

主题

537

帖子

0

精华

高级会员

Rank: 4

积分
797
金钱
797
注册时间
2012-2-27
在线时间
7 小时
发表于 2013-11-18 21:59:17 | 显示全部楼层
我的没有设置:
static void RTC_Alarm_EXIT(void)

 EXTI_InitTypeDef EXTI_InitStructure;
 EXTI_ClearITPendingBit(EXTI_Line17);
 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Line = EXTI_Line17;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
 EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStructure); 

}

正常运行,standby模式进入后可以唤醒
回复 支持 反对

使用道具 举报

54

主题

537

帖子

0

精华

高级会员

Rank: 4

积分
797
金钱
797
注册时间
2012-2-27
在线时间
7 小时
发表于 2013-11-18 22:02:33 | 显示全部楼层
我的设置RTCAlarm_IRQn较高,还是进入的全局的void RTC_IRQHandler(void)
回复 支持 反对

使用道具 举报

71

主题

183

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2013-1-29
在线时间
1 小时
 楼主| 发表于 2013-11-25 17:40:59 | 显示全部楼层
回复【7楼】wwjdwy:
---------------------------------
是有这种情况... 手册上说 闹钟中断可以进入全局中断函数.
回复 支持 反对

使用道具 举报

51

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3275
金钱
3275
注册时间
2013-9-21
在线时间
281 小时
发表于 2015-1-18 10:06:46 | 显示全部楼层
回复【3楼】langwanglx:
---------------------------------
请问楼主如果我用原子哥的rtc实验该如何加入闹钟功能
回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2015-9-4
在线时间
0 小时
发表于 2015-9-9 14:26:30 | 显示全部楼层
好贴  有帮助
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2015-9-29
在线时间
0 小时
发表于 2015-9-29 12:59:18 | 显示全部楼层
万分感谢楼主,昨天调了一晚上闹钟就是唤不醒停机模式,看了本帖恍然大悟了,都不用修改,复制楼主的程序段过来项目直接调通~
回复 支持 反对

使用道具 举报

86

主题

982

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1846
金钱
1846
注册时间
2013-4-15
在线时间
163 小时
发表于 2015-11-17 10:41:12 | 显示全部楼层
楼主说的对我很有用,谢啦
合肥-文盲
回复 支持 反对

使用道具 举报

0

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2015-3-1
在线时间
11 小时
发表于 2015-11-17 15:09:25 | 显示全部楼层
学习研究le
回复 支持 反对

使用道具 举报

15

主题

786

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3223
金钱
3223
注册时间
2015-7-26
在线时间
811 小时
发表于 2015-11-17 15:35:42 | 显示全部楼层
学习,mark!!
我的博客:http://blog.csdn.net/itdo_just
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2015-9-8
在线时间
0 小时
发表于 2015-12-4 17:02:06 | 显示全部楼层
用原子哥的rtc实验,怎么假如闹钟功能啊?用lcd一直改不出来
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2015-7-26
在线时间
9 小时
发表于 2016-2-18 21:10:13 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

6

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2016-4-12
在线时间
97 小时
发表于 2016-4-27 22:44:44 | 显示全部楼层
请问楼主闹钟要怎么加啊
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2016-6-12
在线时间
13 小时
发表于 2016-6-16 14:12:29 | 显示全部楼层
你这个不用设置counter值和ALARM的值吗?
回复 支持 反对

使用道具 举报

10

主题

147

帖子

0

精华

高级会员

Rank: 4

积分
602
金钱
602
注册时间
2015-7-11
在线时间
94 小时
发表于 2016-8-10 12:48:38 | 显示全部楼层
学习一下
回复 支持 反对

使用道具 举报

37

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
826
金钱
826
注册时间
2016-3-17
在线时间
193 小时
发表于 2016-8-10 14:04:17 | 显示全部楼层
  参考一下
回复 支持 反对

使用道具 举报

8

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2016-8-10
在线时间
13 小时
发表于 2016-8-10 22:30:38 | 显示全部楼层
请问这个闹钟是怎么配置出来的啊?RTC能看懂,但是闹钟完全没有头绪诶
回复 支持 反对

使用道具 举报

0

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
326
金钱
326
注册时间
2014-8-15
在线时间
89 小时
发表于 2016-8-25 18:36:00 | 显示全部楼层
MARK.........
回复 支持 反对

使用道具 举报

15

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
154
金钱
154
注册时间
2016-1-18
在线时间
61 小时
发表于 2016-9-28 14:57:26 | 显示全部楼层
楼主能否发一下整个工程给我,试了您这个思路,闹钟没出来,我邮箱936679030@qq.com
回复 支持 反对

使用道具 举报

5

主题

62

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
368
金钱
368
注册时间
2015-9-7
在线时间
82 小时
发表于 2016-9-28 17:33:23 | 显示全部楼层
mark.......
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2016-11-1
在线时间
6 小时
发表于 2016-11-1 14:05:06 | 显示全部楼层
大好大 发表于 2016-9-28 14:57
楼主能否发一下整个工程给我,试了您这个思路,闹钟没出来,我邮箱

你好,你有这个闹钟程序吗?    可以分享一下吗?谢谢了
回复 支持 反对

使用道具 举报

9

主题

53

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
372
金钱
372
注册时间
2016-8-15
在线时间
55 小时
发表于 2016-11-1 14:18:03 | 显示全部楼层
祝中国健儿奥运好成绩
回复 支持 反对

使用道具 举报

11

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2016-5-18
在线时间
56 小时
发表于 2016-12-9 22:35:34 | 显示全部楼层
请问·闹钟·程序能发我一份吗?
398325900@qq.com
回复 支持 反对

使用道具 举报

晨晨晨 该用户已被删除
发表于 2016-12-26 11:00:45 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

9

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2017-3-7
在线时间
25 小时
发表于 2017-3-22 16:49:50 | 显示全部楼层
需要使用外部中断吗,例程里面好像没有啊
回复 支持 反对

使用道具 举报

14

主题

112

帖子

0

精华

高级会员

Rank: 4

积分
500
金钱
500
注册时间
2017-4-25
在线时间
110 小时
发表于 2017-5-8 11:19:46 | 显示全部楼层
按键控制改变LCD上显示的时分秒,年月日,即选定++或--怎么弄?没思路谁知道?按键输入捕获吗?
回复 支持 反对

使用道具 举报

11

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2016-7-6
在线时间
20 小时
发表于 2017-5-24 16:31:22 | 显示全部楼层
楼主,我用的是STM32F0系列的,只有RTC_IRQHandler()怎么办呢
回复 支持 反对

使用道具 举报

14

主题

112

帖子

0

精华

高级会员

Rank: 4

积分
500
金钱
500
注册时间
2017-4-25
在线时间
110 小时
发表于 2017-6-7 15:03:58 | 显示全部楼层
楼主能分享个吗?到现在闹钟中断配置加中断服务函数还没有头绪,2386248280@qq.com
回复 支持 反对

使用道具 举报

14

主题

112

帖子

0

精华

高级会员

Rank: 4

积分
500
金钱
500
注册时间
2017-4-25
在线时间
110 小时
发表于 2017-6-8 14:59:18 | 显示全部楼层
中断服务线17是怎么来的?是什么?我记得外部中断好像是5,10,15
回复 支持 反对

使用道具 举报

13

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2017-7-14
在线时间
56 小时
发表于 2017-7-26 20:09:45 | 显示全部楼层
MARK 好贴
回复 支持 反对

使用道具 举报

32

主题

300

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2012-3-30
在线时间
321 小时
发表于 2017-7-27 07:42:01 | 显示全部楼层
时间准不准?
回复 支持 反对

使用道具 举报

1

主题

47

帖子

0

精华

高级会员

Rank: 4

积分
761
金钱
761
注册时间
2016-10-28
在线时间
106 小时
发表于 2017-7-27 08:37:27 来自手机 | 显示全部楼层
谢谢分享!
回复 支持 反对

使用道具 举报

5

主题

266

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1526
金钱
1526
注册时间
2016-7-20
在线时间
155 小时
发表于 2017-7-27 11:27:27 | 显示全部楼层
mark一下,过段时间要做时钟。
我是可以什么都不说 ,但不可以什么都不做。
回复 支持 反对

使用道具 举报

2

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2014-9-26
在线时间
26 小时
发表于 2017-11-13 14:42:47 | 显示全部楼层
ZTO13 发表于 2017-6-8 14:59
中断服务线17是怎么来的?是什么?我记得外部中断好像是5,10,15

17线是RTC的闹钟外部中断  要多看手册  
潜伏LED流水灯百八十年
回复 支持 反对

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2017-11-12
在线时间
8 小时
发表于 2017-11-14 20:57:36 | 显示全部楼层
回复 支持 反对

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
发表于 2017-11-15 10:46:41 | 显示全部楼层
大家小心了,如果是产品上面需要长时间计时的,不能用这个,误差很大的。  最好是用别的时钟芯片来做。
自己选择的路,成家前走完。
回复 支持 反对

使用道具 举报

24

主题

157

帖子

0

精华

高级会员

Rank: 4

积分
523
金钱
523
注册时间
2016-1-7
在线时间
131 小时
发表于 2018-1-18 21:34:29 | 显示全部楼层
moonsex 发表于 2017-5-24 16:31
楼主,我用的是STM32F0系列的,只有RTC_IRQHandler()怎么办呢

我用的也是STM32F0系列的,只有RTC_IRQHandler(),怎么做RTC唤醒STOP模式啊,你的解决了吗?能发个例程吗?谢谢啊Q1964439971
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2016-9-30
在线时间
35 小时
发表于 2018-8-14 16:30:30 | 显示全部楼层
我用f107 RTC定时唤醒,偶尔会出现唤醒失灵啊,我RTC唤醒中断比RTC秒中断优先级高
回复 支持 反对

使用道具 举报

1

主题

83

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3379
金钱
3379
注册时间
2017-7-10
在线时间
376 小时
发表于 2018-12-4 15:07:15 | 显示全部楼层
遇到同样的问题,捣鼓了1天多。后来才看到楼主,理解的对。
STM32F0系列的,只有RTC_IRQHandler(), 设置EXTI_Line17后在这个里面判断 if(RTC_GetITStatus(RTC_IT_ALRA) != RESET)可以唤醒。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-9-19
在线时间
6 小时
发表于 2019-10-21 15:19:36 | 显示全部楼层
make make
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2019-10-20
在线时间
14 小时
发表于 2019-11-3 10:28:17 | 显示全部楼层
static void RTC_Alarm_EXIT(void) {   EXTI_InitTypeDef EXTI_InitStructure;  EXTI_ClearITPendingBit(EXTI_Line17);  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;     EXTI_InitStructure.EXTI_Line = EXTI_Line17;     EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;  EXTI_InitStructure.EXTI_LineCmd = ENABLE;     EXTI_Init(&EXTI_InitStructure);  }为什么要写这个呢?
回复 支持 反对

使用道具 举报

13

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
407
金钱
407
注册时间
2016-5-26
在线时间
108 小时
发表于 2019-11-5 11:43:24 | 显示全部楼层
我真的要疯了,断断续续好几天了,都没有整出来,放弃不是我的风格
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2019-8-30
在线时间
11 小时
发表于 2020-3-22 10:30:29 | 显示全部楼层
正点原子 发表于 2013-9-27 18:06
回复【3楼】langwanglx:
---------------------------------
嗯,我后面查了下,是对的,有2个服务函数。
...

原子哥,他这个程序中为什么要用外部中断17啊。不用可行吗?
回复 支持 反对

使用道具 举报

4

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
186
金钱
186
注册时间
2018-3-8
在线时间
25 小时
发表于 2020-4-22 20:24:55 | 显示全部楼层
学些学习
回复 支持 反对

使用道具 举报

1

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
178
金钱
178
注册时间
2019-5-12
在线时间
19 小时
发表于 2020-4-29 11:25:48 | 显示全部楼层
正在找同时秒中断和闹钟中断的资料,很有参考价值。但是按照楼主的方法,RTC也是用的原子哥的例程,还是产生不了闹钟中断,还在沉思当中。
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2019-8-16
在线时间
14 小时
发表于 2020-8-11 17:28:25 | 显示全部楼层
我也是按照楼主的方法,RTC也是用的原子哥的例程,还是产生不了闹钟中断,楼主方便发个工程文件么。379764634@qq.com:   谢谢loveliness:  
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 08:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表