历史上的今天
今天是:2025年02月28日(星期五)
2020年02月28日 | 嵌入式stm32学习:外部中断
2020-02-28 来源:eefocus
bsp_exti.h
#ifndef __EXTI_H
#define __EXTI_H
#include "stm32f4xx.h"
//引脚定义
/*******************************************************/
#define KEY1_INT_GPIO_PORT GPIOA
#define KEY1_INT_GPIO_CLK RCC_AHB1Periph_GPIOA
#define KEY1_INT_GPIO_PIN GPIO_Pin_0
#define KEY1_INT_EXTI_PORTSOURCE EXTI_PortSourceGPIOA
#define KEY1_INT_EXTI_PINSOURCE EXTI_PinSource0
#define KEY1_INT_EXTI_LINE EXTI_Line0
#define KEY1_INT_EXTI_IRQ EXTI0_IRQn
#define KEY1_IRQHandler EXTI0_IRQHandler
#define KEY2_INT_GPIO_PORT GPIOC
#define KEY2_INT_GPIO_CLK RCC_AHB1Periph_GPIOC
#define KEY2_INT_GPIO_PIN GPIO_Pin_13
#define KEY2_INT_EXTI_PORTSOURCE EXTI_PortSourceGPIOC
#define KEY2_INT_EXTI_PINSOURCE EXTI_PinSource13
#define KEY2_INT_EXTI_LINE EXTI_Line13
#define KEY2_INT_EXTI_IRQ EXTI15_10_IRQn
#define KEY2_IRQHandler EXTI15_10_IRQHandler
/*******************************************************/
void EXTI_Key_Config(void); //中断按键配置
#endif /* __EXTI_H */
/*********************************************END OF FILE**********************/
bsp.exti.c
#include "./key/bsp_exti.h"
/**
* 配置嵌套向量中断控制器
*/
static void NVIC_Configuration(void)
{
/* 创建一个NVIC中断控制器 */
NVIC_InitTypeDef NVIC_InitStructure;
/* 配置NVIC为优先级组1 */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
/* 配置抢占优先级:1 */
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
/* 配置子优先级:1 */
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
/* 使能中断通道 */
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
/* 配置中断源:按键1 */
NVIC_InitStructure.NVIC_IRQChannel = KEY1_INT_EXTI_IRQ;
NVIC_Init(&NVIC_InitStructure);
/* 配置中断源:按键2 */
NVIC_InitStructure.NVIC_IRQChannel = KEY2_INT_EXTI_IRQ;
NVIC_Init(&NVIC_InitStructure);
}
/**
* 配置PA0为线中断口,并设置中断优先级
*/
void EXTI_Key_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
/* 开启按键GPIO的时钟 */
RCC_AHB1PeriphClockCmd(KEY1_INT_GPIO_CLK|KEY2_INT_GPIO_CLK ,ENABLE);
/* 是能SYSCFG时钟 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
/* 配置NVIC */
NVIC_Configuration();
/* 选择按键1的引脚 */
GPIO_InitStructure.GPIO_Pin = KEY1_INT_GPIO_PIN;
/* 设置引脚为输入模式 */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
/* 设置引脚不上拉也不下拉 */
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
/* 使用上面的结构体初始化按键1 */
GPIO_Init(KEY1_INT_GPIO_PORT, &GPIO_InitStructure);
/* 连接EXIT中断源到key1引脚 */
SYSCFG_EXTILineConfig(KEY1_INT_EXTI_PORTSOURCE,KEY1_INT_EXTI_PINSOURCE);
/* 选择EXIT中断源 */
EXTI_InitStructure.EXTI_Line = KEY1_INT_EXTI_LINE;
/* 中断模式 */
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
/* 下降沿触发 */
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
/* 使能中断/事件线 */
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
/* 使用上面结构体初始化中断 */
EXTI_Init(&EXTI_InitStructure);
/* 选择按键2的引脚 */
GPIO_InitStructure.GPIO_Pin = KEY2_INT_GPIO_PIN;
/* 使用上面的结构体初始化按键2 */
GPIO_Init(KEY2_INT_GPIO_PORT, &GPIO_InitStructure);
/* 连接EXIT中断源到key2引脚 */
SYSCFG_EXTILineConfig(KEY2_INT_EXTI_PORTSOURCE,KEY2_INT_EXTI_PINSOURCE);
/* 选择EXIT中断源 */
EXTI_InitStructure.EXTI_Line = KEY2_INT_EXTI_LINE;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
/* 上升沿触发 */
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
}
史海拾趣
|
1.没有人强迫你,是你志愿选择了symbian os. 2.这是最重要的问题,开发symbian 平台的软件到底有没有前途呢?每个symbian os的开发者都在考虑这个的问题,答案很简单,问问市场就知道了,只要你做的是精品,肯定会得到认可的。全球每年生产几亿部 ...… 查看全部问答> |
|
其实从事什么行业不重要,重要的是你能否成为这个行业的精英!! 如果这个问题解决了, 那你的人生已经成功了一半。记住先解决目标: 因为你不知道自己努力的方向,加油是没有用的。人的潜能是无限的, 但人的精力是有限的,不可能所有的事 ...… 查看全部问答> |
|
如题“ 求友善之臂SBC2410光盘资料包含vivi等内核源码” 在线等待,急用........ 哪个兄弟有, 恳请您给我发一个 ,在下不胜感激, 资料内容比较大,所以请您发到我的邮箱:804763993@qq.com 请注明您的eeworld号 我给你再追加100分 谢谢.....… 查看全部问答> |
|
Microsoft (R) Windows Debugger Version 6.11.0001.404 X86 Copyright (c) Microsoft Corporation. All rights reserved. Opened \\\\.\\pipe\\com_1 Waiting to reconnect... Connected to Windows XP 2600 x86 compatible target at (Wed ...… 查看全部问答> |
|
我用c#在2440上面编写应用程序,开发速度快~ 但是c#怎么碰到底层硬件,怎样直接控制2440的GPIO, evc当中有个内存映射的东西,但是在c#下面怎么搞?? 网上查了下,c#的都是LED的那个,但问题是 GPIO的话是不是得先要写个GPIO驱动的DLL,然后再去createfi ...… 查看全部问答> |
|
最近将wince6从 R2升级到了R3, 发现ie在打开网页后出现Data Abort. 网页还是能打开。但是CPU占用率变化很大。经常上升到%100. 从MS的官方论坛发现了打了R3 09年12月份的补丁是必然会出现Data Abort的, 但是我安装的是R3没有添加任何补丁的也会出现 ...… 查看全部问答> |
|
设备名称:离心机 使用单片机控制板通过485控制变频器(RTU 9600) 现在遇到一个问题,马达的外壳与地线连接时通信容易中断,而且温控传感器信号受干扰。(变频器与离心机分别用过两个插头供电) 现在特郁闷,这东东有时正常工作,有时不行,有时半 ...… 查看全部问答> |
|
我用的是CC2530 Development Kit的开发板套件,在套件里,有个CC2531 USB Dongle,将这个USB Dongle插到电脑上的时候,提示无法识别,参照文档看的时候,上面有说要装个驱动,但是我搜了好久,也没发现它要装什么样的驱动才可以识别,哪位大侠可以 ...… 查看全部问答> |




