stm32外部接连引脚功用阐明
使能装备EXTI、NVIC接连后,还需求留神IO口时钟的使能。当然要装备EXIT,有必要使能AFIO时钟。
下面简略列出外部接连的编程思路:
1、体系初始化,如体系时钟初始化,使之进入72MHZ主频;(这一个不必定)
2、GPIO装备,有必要留神翻开GPIO时钟时,必定翻开AFIO时钟。
3、EXTI装备,在这儿装备需求挑选哪个引脚作为接连引脚。
4、NVIC装备,这也是比单片机多出来的有些,咱们有必要把NVIC中对应
的通道使能,而且设置优先等级。
5、运用while(1)进行死循环,并在接连程序中写入接连发作时应怎么处理。
下面介绍一下STM32抢占优先级的疑问:
Cortex-M3共运用8位来设置优先级,有优先级组设置,以及抢占和子优先级装备、
在STM32中,运用4位来设置优先级。
对于同一抢占优先级的接连来说,即即是子优先级高的也不能接连正在施行的接连,只需高抢占优先级的接连方可接连正在施行中的接连。还有一些疑问,有待进一步处理。
下边的五行我自个认为是stm32的对于嵌套接连的说法:
0位抢占优先级,4位子优先级:设置为16级子优先级,不运用抢占式优先级;
1位抢占优先级,3位子优先级:设置为8级子优先级,2级抢占式优先级;
2位抢占优先级,2位子优先级:设置为4级子优先级,4级抢占式优先级;
3位抢占优先级,1位子优先级:设置为2级子优先级,8级抢占式优先级;
4位抢占优先级,0位子优先级:设置为不运用子优先级,16级抢占式优先级;
在STM32/Cortex-M3中是经过改动CPU的其时优先级来容许或阻遏接连。
PRIMASK位:只容许NMI和hard fault反常,别的接连/反常都被屏蔽(其时CPU优先级=0)。
AULTMASK位:只容许NMI,别的悉数接连/反常都被屏蔽(其时CPU优先级=-1)。
在STM32固件库中(stm32f10x_nvic.c和stm32f10x_nvic.h) 界说了四个函数操作PRIMASK位和FAULTMASK位,改动CPU的其时优先级,然后抵达操控悉数接连的意图。
下面两个函数等效于封闭总接连:
void NVIC_SETPRIMASK(void);
void NVIC_SETFAULTMASK(void);
下面两个函数等效于翻开总接连:
void NVIC_RESETPRIMASK(void);
void NVIC_RESETFAULTMASK(void);
上面两组函数要成对运用,但不能穿插运用。
例如:
榜首种办法:
NVIC_SETPRIMASK(); //封闭总接连
NVIC_RESETPRIMASK();//翻开总接连
第二种办法:
NVIC_SETFAULTMASK(); //封闭总接连
NVIC_RESETFAULTMASK();//翻开总接连
常常运用:
NVIC_SETPRIMASK(); // Disable Interrupts
NVIC_RESETPRIMASK(); // Enable Interrupts
下一篇:整流桥原理及命名规矩