前语:这些问题都是我之前在作业中遇到的,后来觉得需求总结,自己回忆欠好,所以在这个给自己打个mark。
一:触发方法
STM32
二:外部中止分组
STM32
STM32
管脚 |
中止标志 |
中止处理函数分配 |
PA0~PG0 |
EXTI0 |
EXTI0_IRQHandler |
PA1~PG1 |
EXTI1 |
EXTI1_IRQHandler |
PA2~PG2 |
EXTI2 |
EXTI2_IRQHandler |
PA3~PG3 |
EXTI3 |
EXTI3_IRQHandler |
PA4~PG4 |
EXTI4 |
EXTI4_IRQHandler |
PA5~PG5 |
EXTI5 |
|
PA6~PG6 |
EXTI6 |
|
PA7~PG7 |
EXTI7 |
|
PA8~PG8 |
EXTI8 |
|
PA9~PG9 |
EXTI9 |
|
PA10~PG10 |
EXTI10 |
EXTI15_10_IRQHandler |
PA11~PG11 |
EXTI11 |
|
PA12~PG12 |
EXTI12 |
|
PA13~PG13 |
EXTI13 |
|
PA14~PG14 |
EXTI14 |
|
PA15~PG15 |
EXTI15 |
三:外部中止的装备进程
l
触发源为经过GPIO端口输入,所以,要装备GPIO的形式,输入方法,输入方法有以下几种:
1.GPIO_Mode_AIN
2.GPIO_Mode_IN_FLOATING
3.GPIO_Mode_IPD
4.GPIO_Mode_IPU
l
l
l
这个主要是中止线路挑选,中止触发方法,中止使能。
l
l
四:外部中止函数不能进入的原因剖析
结合我作业中的遇到的问题能够分为:
1)GPIO或许AFIO的时钟没有敞开;
2)GPIO和装备的中止线路不匹配;
3)中止触发方法和实践不相契合;
4)中止处理函数用库函数时,写错,常常或许呈现数字和字母之间没有下划线;
5)外部中止是沿触发,有或许不能检测到沿,比方
6)没有用软件中止来触发外部中止,调用函数EXTI_GenerateSWInterrupt;,由于软件中止先于边缘中止处理。
我的问题呈现在没有发动AFIO时钟信号;RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);导致总也进不了中止