OpenEdv-开源电子网

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

RTCAlarm_IRQ,RTC_IRQ,EXTI15_10_IRQ的关系

[复制链接]

6

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2015-9-25
在线时间
4 小时
发表于 2015-11-12 03:41:37 | 显示全部楼层 |阅读模式
5金钱
[调试条件]
使用的STM32F103,FirmWare3.5

[参考手册的描述]
按照参考手册上解释的:
    当以此函数进入到STOP模式时WR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFE);
    可以用以下方式唤醒STOP模式
        RTC_Alarm的中断请求 -> EXTI_Line17中断请求 -> 关闭NVIC的EXTI15_10中断 -> 开启SCB的Send_Event_On_Pend(指NVIC接收到中断请求时,发出事件)

[实际调试时]
    1. RTC_Alarm可以按照手册上描述的那样:通过EXTI_Line17的中断请求事件,唤醒STOP模式
    2. 如果同时开启了RTCAlarm_IRQn(高优先级)RTC_IRQn(低优先级)(但还是使用EXTI_Line17的中断请求事件来唤醒STOP模式),则系统被EXTI_Line17中断请求事件唤醒后,只会进入到RTC_IRQHandler(), 而不是进入到RTCAlarm_IRQHandler()
    3. 如果开启RTC中断,并使系统全速运行,则三种中断请求(OverFlow,Alarm,Second)都会触发RTC中断,进入到RTC_IRQHandler()

[我的理解,但未实际调试来证实]
        如果是用WFI进入到STOP模式: 
PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);
        则要用这种方式唤醒STOP模式: 
RTC_Alarm的中断请求 -> EXTI_Line17中断请求 -> 开启NVIC的EXTI15_10中断 
       那么唤醒STOP模式后也只会进入到EXTI15_10_IRQHandler(), 而不是进入到RTCAlarm_IRQHandler()(我觉得这样会更符合情理)

[问题]

       这样说来,岂不是不论在全速运行模式,还是用RTC_Alarm->EXTI_Line17中断请求事件唤醒STOP_Mode_WFE,还是用RTC_Alarm->EXTI_Line17中断唤醒STOP_Mode_WFI,都会使用RTC_IRQn,那么就没有必要使用RTCAlarm_IRQn,
       那么RTCAlarm_IRQHandler()是干什么用的?怎么才能进入呢?


网上没有查到RTCAlarm_IRQn资料,手册上也没查到,请求知道这部分内容的朋友能够不吝告知,
不胜感谢!!!

最佳答案

查看完整内容[请看2#楼]

 今天翻资料,搞明白为什么了,分享一下 [背景] STM32F10x微控制器参考手册中文版(翻译于英文版:2009年12月第10版) [问题的解释] 参看手册9.1.2中断和异常向量表中的PVC,RTCAlarm,ETH_WKUP,USB_WKUP,在说明列是这么说的:连到EXTI的***中断.     再查看EXTI的所有中断源(手册9.2.5,图20)有:EXTI_0~19    其中  EXTI0~15映射到了IO口,             EXTI1 ...
供大家参考,希望和同行交流经验
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2015-9-25
在线时间
4 小时
 楼主| 发表于 2015-11-12 03:41:38 | 显示全部楼层
 今天翻资料,搞明白为什么了,分享一下

[背景]
STM32F10x微控制器参考手册中文版(翻译于英文版:2009年12月第10版)

[问题的解释]
参看手册9.1.2中断和异常向量表中的PVC,RTCAlarm,ETH_WKUP,USB_WKUP,在说明列是这么说的:连到EXTI的***中断.    
再查看EXTI的所有中断源(手册9.2.5,图20)有:EXTI_0~19
   其中  EXTI0~15映射到了IO口,
            EXTI16连接到PVD的输出,
            EXTI17连接到RTC闹钟事件,  
            EXTI18连接到USB唤醒事件,
            EXTI19连接到ETH唤醒事件
再查看stm32f10x_firmware_v3.5中的startup_stm32f10x_hd.s
    其中的这一段是向量表,其中关键的地方我用彩色标记出来了
__Vectors       DCD     __initial_sp               ; Top of Stack
                DCD     Reset_Handler              ; Reset Handler
                DCD     NMI_Handler                ; NMI Handler
                DCD     HardFault_Handler          ; Hard Fault Handler
                DCD     MemManage_Handler          ; MPU Fault Handler
                DCD     BusFault_Handler           ; Bus Fault Handler
                DCD     UsageFault_Handler         ; Usage Fault Handler
                DCD     0                          ; Reserved
                DCD     0                          ; Reserved
                DCD     0                          ; Reserved
                DCD     0                          ; Reserved
                DCD     SVC_Handler                ; SVCall Handler
                DCD     DebugMon_Handler           ; Debug Monitor Handler
                DCD     0                          ; Reserved
                DCD     PendSV_Handler             ; PendSV Handler
                DCD     SysTick_Handler            ; SysTick Handler

                ; External Interrupts
                DCD     WWDG_IRQHandler            ; Window Watchdog
                DCD     PVD_IRQHandler             ; PVD through EXTI Line detect
                DCD     TAMPER_IRQHandler          ; Tamper
                DCD     RTC_IRQHandler             ; RTC
                DCD     FLASH_IRQHandler           ; Flash
                DCD     RCC_IRQHandler             ; RCC
                DCD     EXTI0_IRQHandler           ; EXTI Line 0
                DCD     EXTI1_IRQHandler           ; EXTI Line 1
                DCD     EXTI2_IRQHandler           ; EXTI Line 2
                DCD     EXTI3_IRQHandler           ; EXTI Line 3
                DCD     EXTI4_IRQHandler           ; EXTI Line 4
                DCD     DMA1_Channel1_IRQHandler   ; DMA1 Channel 1
                DCD     DMA1_Channel2_IRQHandler   ; DMA1 Channel 2
                DCD     DMA1_Channel3_IRQHandler   ; DMA1 Channel 3
                DCD     DMA1_Channel4_IRQHandler   ; DMA1 Channel 4
                DCD     DMA1_Channel5_IRQHandler   ; DMA1 Channel 5
                DCD     DMA1_Channel6_IRQHandler   ; DMA1 Channel 6
                DCD     DMA1_Channel7_IRQHandler   ; DMA1 Channel 7
                DCD     ADC1_2_IRQHandler          ; ADC1 & ADC2
                DCD     USB_HP_CAN1_TX_IRQHandler  ; USB High Priority or CAN1 TX
                DCD     USB_LP_CAN1_RX0_IRQHandler ; USB Low  riority or CAN1 RX0
                DCD     CAN1_RX1_IRQHandler        ; CAN1 RX1
                DCD     CAN1_SCE_IRQHandler        ; CAN1 SCE
                DCD     EXTI9_5_IRQHandler         ; EXTI Line 9..5
                DCD     TIM1_BRK_IRQHandler        ; TIM1 Break
                DCD     TIM1_UP_IRQHandler         ; TIM1 Update
                DCD     TIM1_TRG_COM_IRQHandler    ; TIM1 Trigger and Commutation
                DCD     TIM1_CC_IRQHandler         ; TIM1 Capture Compare
                DCD     TIM2_IRQHandler            ; TIM2
                DCD     TIM3_IRQHandler            ; TIM3
                DCD     TIM4_IRQHandler            ; TIM4
                DCD     I2C1_EV_IRQHandler         ; I2C1 Event
                DCD     I2C1_ER_IRQHandler         ; I2C1 Error
                DCD     I2C2_EV_IRQHandler         ; I2C2 Event
                DCD     I2C2_ER_IRQHandler         ; I2C2 Error
                DCD     SPI1_IRQHandler            ; SPI1
                DCD     SPI2_IRQHandler            ; SPI2
                DCD     USART1_IRQHandler          ; USART1
                DCD     USART2_IRQHandler          ; USART2
                DCD     USART3_IRQHandler          ; USART3
                DCD     EXTI15_10_IRQHandler       ; EXTI Line 15..10
                DCD     RTCAlarm_IRQHandler        ; RTC Alarm through EXTI Line
                DCD     USBWakeUp_IRQHandler       ; USB Wakeup from suspend
                DCD     TIM8_BRK_IRQHandler        ; TIM8 Break
                DCD     TIM8_UP_IRQHandler         ; TIM8 Update
                DCD     TIM8_TRG_COM_IRQHandler    ; TIM8 Trigger and Commutation
                DCD     TIM8_CC_IRQHandler         ; TIM8 Capture Compare
                DCD     ADC3_IRQHandler            ; ADC3
                DCD     FSMC_IRQHandler            ; FSMC
                DCD     SDIO_IRQHandler            ; SDIO
                DCD     TIM5_IRQHandler            ; TIM5
                DCD     SPI3_IRQHandler            ; SPI3
                DCD     UART4_IRQHandler           ; UART4
                DCD     UART5_IRQHandler           ; UART5
                DCD     TIM6_IRQHandler            ; TIM6
                DCD     TIM7_IRQHandler            ; TIM7
                DCD     DMA2_Channel1_IRQHandler   ; DMA2 Channel1
                DCD     DMA2_Channel2_IRQHandler   ; DMA2 Channel2
                DCD     DMA2_Channel3_IRQHandler   ; DMA2 Channel3
                DCD     DMA2_Channel4_5_IRQHandler ; DMA2 Channel4 & Channel5
__Vectors_End
        看这段中蓝色和红色的行,就可得知,根本没有EXTI(16~19)_IRQHandler,取而代之的是:PVD_IRQHandler,  RTCAlarm_IRQHandler  USBWakeUp_IRQHandler  (高密度型STM32F10X没有ethernet,所以就没有对应的中断)

[结论]
所以我理解的PVD_IRQHandler,  RTCAlarm_IRQHandler  USBWakeUp_IRQHandler其实就是EXTI(16~19)_IRQHandler,
只不过他们不是普通的EXTI_IRQHandler,而是其输入线从内部连接在指定片上外设的EXTI,
因此他们的中断名称就被起了更加贴切的名字:PVD_IRQHandler,  RTCAlarm_IRQHandler  USBWakeUp_IRQHandler


供大家参考,希望和同行交流经验
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-11-12 12:32:25 | 显示全部楼层
貌似带alarm是时钟定时器中断,不带是时钟中断,如整点的时候可以设置进入中断

帮顶一下吧
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-11-13 21:13:54 | 显示全部楼层
回复【3楼】kinkun:
---------------------------------
谢谢分享
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

94

主题

369

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2016-8-25
在线时间
485 小时
发表于 2018-3-4 18:04:30 | 显示全部楼层
本帖最后由 学习stm32f4 于 2018-3-4 18:25 编辑

谢谢分享
回复

使用道具 举报

2

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2019-7-5
在线时间
15 小时
发表于 2019-7-24 10:51:57 | 显示全部楼层
谢谢分享
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 09:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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