3回答

0收藏

请问大神如何去开关STM32F03的总中断

STMCU STMCU 3047 人阅读 | 3 人回复 | 2015-08-10

本帖最后由 酷酷羊-340901 于 2015-8-10 16:02 编辑

最近刚入手STM32F0系列的单片机,可是找了很久都不知道如何去开关它的总中断。

评分

参与人数 1与非币 +5 收起 理由
loveeeboard + 5 三周年铜板双倍!

查看全部评分

分享到:
回复

使用道具 举报

回答|共 3 个

倒序浏览

沙发

woshizz

发表于 2015-8-10 16:05:40 | 只看该作者

本帖最后由 woshizz 于 2015-8-10 16:11 编辑

stm32可屏蔽中断共有60个,这里用了两个32位的寄存器,可以表示64个中断。stm32只用了前60位。 若要使能某个中断,则必须设置相应的ISER位为1。
具体每一位对应的中断关系如下:(参见 MDK下的 stm32f10x_nvic.h)
[size=1em][size=1em]
01
#define WWDG_IRQChannel              ((u8)0x00)  /* Window WatchDog Interrupt */

[size=1em]
02
#define PVD_IRQChannel               ((u8)0x01)  /* PVD through EXTI Line detection Interrupt */

[size=1em]
03
#define TAMPER_IRQChannel            ((u8)0x02)  /* Tamper Interrupt */

[size=1em]
04
#define RTC_IRQChannel               ((u8)0x03)  /* RTC global Interrupt */

[size=1em]
05
#define FLASH_IRQChannel             ((u8)0x04)  /* FLASH global Interrupt */

[size=1em]
06
#define RCC_IRQChannel               ((u8)0x05)  /* RCC global Interrupt */

[size=1em]
07
#define EXTI0_IRQChannel             ((u8)0x06)  /* EXTI Line0 Interrupt */

[size=1em]
08
#define EXTI1_IRQChannel             ((u8)0x07)  /* EXTI Line1 Interrupt */

[size=1em]
09
#define EXTI2_IRQChannel             ((u8)0x08)  /* EXTI Line2 Interrupt */

[size=1em]
10
#define EXTI3_IRQChannel             ((u8)0x09)  /* EXTI Line3 Interrupt */

[size=1em]
11
#define EXTI4_IRQChannel             ((u8)0x0A)  /* EXTI Line4 Interrupt */

[size=1em]
12
#define DMA1_Channel1_IRQChannel     ((u8)0x0B)  /* DMA1 Channel 1 global Interrupt */

[size=1em]
13
#define DMA1_Channel2_IRQChannel     ((u8)0x0C)  /* DMA1 Channel 2 global Interrupt */

[size=1em]
14
#define DMA1_Channel3_IRQChannel     ((u8)0x0D)  /* DMA1 Channel 3 global Interrupt */

[size=1em]
15
#define DMA1_Channel4_IRQChannel     ((u8)0x0E)  /* DMA1 Channel 4 global Interrupt */

[size=1em]
16
#define DMA1_Channel5_IRQChannel     ((u8)0x0F)  /* DMA1 Channel 5 global Interrupt */

[size=1em]
17
#define DMA1_Channel6_IRQChannel     ((u8)0x10)  /* DMA1 Channel 6 global Interrupt */

[size=1em]
18
#define DMA1_Channel7_IRQChannel     ((u8)0x11)  /* DMA1 Channel 7 global Interrupt */

[size=1em]
19
#define ADC1_2_IRQChannel            ((u8)0x12)  /* ADC1 et ADC2 global Interrupt */

[size=1em]
20
#define USB_HP_CAN_TX_IRQChannel     ((u8)0x13)  /* USB High Priority or CAN TX Interrupts */

[size=1em]
21
#define USB_LP_CAN_RX0_IRQChannel    ((u8)0x14)  /* USB Low Priority or CAN RX0 Interrupts */

[size=1em]
22
#define CAN_RX1_IRQChannel           ((u8)0x15)  /* CAN RX1 Interrupt */

[size=1em]
23
#define CAN_SCE_IRQChannel           ((u8)0x16)  /* CAN SCE Interrupt */

[size=1em]
24
#define EXTI9_5_IRQChannel           ((u8)0x17)  /* External Line[9:5] Interrupts */

[size=1em]
25
#define TIM1_BRK_IRQChannel          ((u8)0x18)  /* TIM1 Break Interrupt */

[size=1em]
26
#define TIM1_UP_IRQChannel           ((u8)0x19)  /* TIM1 Update Interrupt */

[size=1em]
27
#define TIM1_TRG_COM_IRQChannel      ((u8)0x1A)  /* TIM1 Trigger and Commutation Interrupt */

[size=1em]
28
#define TIM1_CC_IRQChannel           ((u8)0x1B)  /* TIM1 Capture Compare Interrupt */

[size=1em]
29
#define TIM2_IRQChannel              ((u8)0x1C)  /* TIM2 global Interrupt */

[size=1em]
30
#define TIM3_IRQChannel              ((u8)0x1D)  /* TIM3 global Interrupt */

[size=1em]
31
#define TIM4_IRQChannel              ((u8)0x1E)  /* TIM4 global Interrupt */

[size=1em]
32
#define I2C1_EV_IRQChannel           ((u8)0x1F)  /* I2C1 Event Interrupt */

[size=1em]
33
#define I2C1_ER_IRQChannel           ((u8)0x20)  /* I2C1 Error Interrupt */

[size=1em]
34
#define I2C2_EV_IRQChannel           ((u8)0x21)  /* I2C2 Event Interrupt */

[size=1em]
35
#define I2C2_ER_IRQChannel           ((u8)0x22)  /* I2C2 Error Interrupt */

[size=1em]
36
#define SPI1_IRQChannel              ((u8)0x23)  /* SPI1 global Interrupt */

[size=1em]
37
#define SPI2_IRQChannel              ((u8)0x24)  /* SPI2 global Interrupt */

[size=1em]
38
#define USART1_IRQChannel            ((u8)0x25)  /* USART1 global Interrupt */

[size=1em]
39
#define USART2_IRQChannel            ((u8)0x26)  /* USART2 global Interrupt */

[size=1em]
40
#define USART3_IRQChannel            ((u8)0x27)  /* USART3 global Interrupt */

[size=1em]
41
#define EXTI15_10_IRQChannel         ((u8)0x28)  /* External Line[15:10] Interrupts */

[size=1em]
42
#define RTCAlarm_IRQChannel          ((u8)0x29)  /* RTC Alarm through EXTI Line Interrupt */

[size=1em]
43
#define USBWakeUp_IRQChannel         ((u8)0x2A)  /* USB WakeUp from suspend through EXTI Line Interrupt */

[size=1em]
44
#define TIM8_BRK_IRQChannel          ((u8)0x2B)  /* TIM8 Break Interrupt */

[size=1em]
45
#define TIM8_UP_IRQChannel           ((u8)0x2C)  /* TIM8 Update Interrupt */

[size=1em]
46
#define TIM8_TRG_COM_IRQChannel      ((u8)0x2D)  /* TIM8 Trigger and Commutation Interrupt */

[size=1em]
47
#define TIM8_CC_IRQChannel           ((u8)0x2E)  /* TIM8 Capture Compare Interrupt */

[size=1em]
48
#define ADC3_IRQChannel              ((u8)0x2F)  /* ADC3 global Interrupt */

[size=1em]
49
#define FSMC_IRQChannel              ((u8)0x30)  /* FSMC global Interrupt */

[size=1em]
50
#define SDIO_IRQChannel              ((u8)0x31)  /* SDIO global Interrupt */

[size=1em]
51
#define TIM5_IRQChannel              ((u8)0x32)  /* TIM5 global Interrupt */

[size=1em]
52
#define SPI3_IRQChannel              ((u8)0x33)  /* SPI3 global Interrupt */

[size=1em]
53
#define UART4_IRQChannel             ((u8)0x34)  /* UART4 global Interrupt */

[size=1em]
54
#define UART5_IRQChannel             ((u8)0x35)  /* UART5 global Interrupt */

[size=1em]
55
#define TIM6_IRQChannel              ((u8)0x36)  /* TIM6 global Interrupt */

[size=1em]
56
#define TIM7_IRQChannel              ((u8)0x37)  /* TIM7 global Interrupt */

[size=1em]
57
#define DMA2_Channel1_IRQChannel     ((u8)0x38)  /* DMA2 Channel 1 global Interrupt */

[size=1em]
58
#define DMA2_Channel2_IRQChannel     ((u8)0x39)  /* DMA2 Channel 2 global Interrupt */

[size=1em]
59
#define DMA2_Channel3_IRQChannel     ((u8)0x3A)  /* DMA2 Channel 3 global Interrupt */

[size=1em]
60
#define DMA2_Channel4_5_IRQChannel   ((u8)0x3B)  /* DMA2 Channel 4 and DMA2 Channel 5 global Interrupt */



系统中断这里没有申明,所以导致一些系统中断无法使用,比如 systick的中断

所以 楼主只需要设置上述寄存器内容全0即可
板凳

酷酷羊-340901

发表于 2015-8-10 16:11:33 | 只看该作者

woshizz 发表于 2015-8-10 16:05
楼主辛苦了 真是好人啊

??啥情况啊
地板

woshizz

发表于 2015-8-10 16:18:45 | 只看该作者

浏览器自动记忆上一次回复内容导致的 ,抱歉了
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条