这些先直接给出代码:
void Exti_Config(void)
{ EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line = EXTI_Line0|EXTI_Line1|EXTI_Line2;
//哪些线将被配置
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
//中断模式还是事件模式
/*typedef enum
{
EXTI_Mode_Interrupt = 0x00,
EXTI_Mode_Event = 0x04
}EXTIMode_TypeDef;
*/
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发
/*typedef enum
{
EXTI_Trigger_Rising = 0x08,
EXTI_Trigger_Falling = 0x 0C,
EXTI_Trigger_Rising_Falling = 0x10
}EXTITrigger_TypeDef;
可见,可选的模式有3种:上升沿触发、下降沿触发、上升沿和下降沿均触发
*/
EXTI_InitStructure.EXTI_LineCmd = ENABLE; //中断线使能
如果没有这行,那么设置就无法进行了,看一看XTI_Init的代码:
void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)
{
……
if (EXTI_InitStruct-》EXTI_LineCmd != DISABLE)
{……各种设置都在下面的代码中进行,而执行到的条件是上面那行程序;
}
*/
EXTI_Init(&EXTI_InitStructure); //初始化中断
/*结构中该填写的内容都填写了,执行初始化程序*/
EXTI_GenerateSWInterrupt(EXTI_Line0|EXTI_Line1|EXTI_Line2);
/*
而EXTI_Line0、EXTI_Line1、EXTI_Line2的定义则在stm 32f10x_exti.h中
#define EXTI_Line0 ((uint32_t)0x00001) /*!《 External interrupt line 0 */
#define EXTI_Line1 ((uint32_t)0x00002) /*!《 External interrupt line 1 */
#define EXTI_Line2 ((uint32_t)0x00004) /*!《 External interrupt line 2 */
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页
本文关键字:手记 嵌入式系统-技术,单片机-工控设备 - 嵌入式系统-技术