blob: 0214767e6b4d3b23751f53f9bffad3fa56a950c2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
/******************************************************************************************************************************************
* �����: SWM320_exti.c
* ����˵��: SWM320��Ƭ�����ⲿ�жϹ���������
* ����֧��: http://www.synwit.com.cn/e/tool/gbook/?bid=1
* ע������:
* �汾����: V1.1.0 2017��10��25��
* ������¼:
*
*******************************************************************************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
* OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
* -ECTION WITH THEIR PRODUCTS.
*
* COPYRIGHT 2012 Synwit Technology
*******************************************************************************************************************************************/
#include "SWM320.h"
#include "SWM320_exti.h"
/******************************************************************************************************************************************
* ��������: EXTI_Init()
* ����˵��: ָ�������ⲿ�жϳ�ʼ��
* �� ��: GPIO_TypeDef * GPIOx ָ�������ⲿ�жϵ�GPIO�˿ڣ���Чֵ����GPIOA��GPIOB��GPIOC��GPIOM��GPION��GPIOP
* uint32_t n ָ�������ⲿ�жϵ�GPIO���ţ���Чֵ����PIN0��PIN1��PIN2��... ... PIN22��PIN23
* uint32_t mode ��Чֵ��EXTI_FALL_EDGE��EXTI_RISE_EDGE��EXTI_BOTH_EDGE��EXTI_LOW_LEVEL��EXTI_HIGH_LEVEL
* �� ��: ��
* ע������: ����GPIOA��GPIOB��GPIOC��GPIOM��PIN0--7���ż����Խ���NVIC�е������жϣ���GPIOA0_IRQn����Ҳ���Խ���NVIC�����жϣ�GPIOA_IRQn����
* ���Բ��ڴ˺����е���NVIC_EnableIRQ()ʹ��NVIC�жϣ��Ӷ����Ը�����Ҫ����NVIC_EnableIRQ(GPIOA0_IRQn)��NVIC_EnableIRQ(GPIOA_IRQn)
******************************************************************************************************************************************/
void EXTI_Init(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t mode)
{
EXTI_Close(GPIOx, n); //���ùؼ��Ĵ���ǰ�ȹر�
if (mode & 0x10)
{
GPIOx->INTLVLTRG |= (0x01 << n); //��ƽ����
if (mode & 0x01)
GPIOx->INTRISEEN |= (0x01 << n); //�ߵ�ƽ����
else
GPIOx->INTRISEEN &= ~(0x01 << n); //�͵�ƽ����
}
else
{
GPIOx->INTLVLTRG &= ~(0x01 << n); //���ش���
if (mode & 0x02)
{
GPIOx->INTBE |= (0x01 << n); //˫���ش���
}
else
{
GPIOx->INTBE &= ~(0x01 << n); //�����ش���
if (mode & 0x01)
GPIOx->INTRISEEN |= (0x01 << n); //�����ش���
else
GPIOx->INTRISEEN &= ~(0x01 << n); //�½��ش���
}
}
GPIOx->INTCLR = (1 << n); //�������Ϊģʽ���ÿ��ܲ������ж�
}
/******************************************************************************************************************************************
* ��������: EXTI_Open()
* ����˵��: ָ�������ⲿ�жϴ���ʹ�ܣ�
* �� ��: GPIO_TypeDef * GPIOx ָ�������ⲿ�жϵ�GPIO�˿ڣ���Чֵ����GPIOA��GPIOB��GPIOC��GPIOM��GPION��GPIOP
* uint32_t n ָ�������ⲿ�жϵ�GPIO���ţ���Чֵ����PIN0��PIN1��PIN2��... ... PIN22��PIN23
* �� ��: ��
* ע������: ��
******************************************************************************************************************************************/
void EXTI_Open(GPIO_TypeDef *GPIOx, uint32_t n)
{
GPIOx->INTEN |= (0x01 << n);
}
/******************************************************************************************************************************************
* ��������: EXTI_Close()
* ����˵��: ָ�������ⲿ�жϹرգ������ܣ�
* �� ��: GPIO_TypeDef * GPIOx ָ�������ⲿ�жϵ�GPIO�˿ڣ���Чֵ����GPIOA��GPIOB��GPIOC��GPIOM��GPION��GPIOP
* uint32_t n ָ�������ⲿ�жϵ�GPIO���ţ���Чֵ����PIN0��PIN1��PIN2��... ... PIN22��PIN23
* �� ��: ��
* ע������: ��
******************************************************************************************************************************************/
void EXTI_Close(GPIO_TypeDef *GPIOx, uint32_t n)
{
GPIOx->INTEN &= ~(0x01 << n);
}
/******************************************************************************************************************************************
* ��������: EXTI_State()
* ����˵��: ָ�������Ƿ����ж�
* �� ��: GPIO_TypeDef * GPIOx ָ�������ⲿ�жϵ�GPIO�˿ڣ���Чֵ����GPIOA��GPIOB��GPIOC��GPIOM��GPION��GPIOP
* uint32_t n ָ�������ⲿ�жϵ�GPIO���ţ���Чֵ����PIN0��PIN1��PIN2��... ... PIN22��PIN23
* �� ��: uint32_t 1 �����Ŵ������ж� 0 ������δ�����ж�
* ע������: ��
******************************************************************************************************************************************/
uint32_t EXTI_State(GPIO_TypeDef *GPIOx, uint32_t n)
{
return (GPIOx->INTSTAT >> n) & 0x01;
}
/******************************************************************************************************************************************
* ��������: EXTI_RawState()
* ����˵��: ָ�������Ƿ������/���жϴ��������������жϹر�ʱ��ͨ�����ô˺����Բ�ѯ�ķ�ʽ����������Ƿ������/���жϴ�������
* �� ��: GPIO_TypeDef * GPIOx ָ�������ⲿ�жϵ�GPIO�˿ڣ���Чֵ����GPIOA��GPIOB��GPIOC��GPIOM��GPION��GPIOP
* uint32_t n ָ�������ⲿ�жϵ�GPIO���ţ���Чֵ����PIN0��PIN1��PIN2��... ... PIN22��PIN23
* �� ��: uint32_t 1 �����������/���жϴ������� 0 ������δ�����/���жϴ�������
* ע������: ��
******************************************************************************************************************************************/
uint32_t EXTI_RawState(GPIO_TypeDef *GPIOx, uint32_t n)
{
return (GPIOx->INTRAWSTAT >> 1) & 0x01;
}
/******************************************************************************************************************************************
* ��������: EXTI_Clear()
* ����˵��: ָ�������ⲿ�ж������������жϱ�־�������ٴν�����жϣ�
* �� ��: GPIO_TypeDef * GPIOx ָ�������ⲿ�жϵ�GPIO�˿ڣ���Чֵ����GPIOA��GPIOB��GPIOC��GPIOM��GPION��GPIOP
* uint32_t n ָ�������ⲿ�жϵ�GPIO���ţ���Чֵ����PIN0��PIN1��PIN2��... ... PIN22��PIN23
* �� ��: ��
* ע������: ֻ��������ش����жϵı�־����ƽ�����жϵı�־�������ֻ�������ŵ�ƽ�������жϴ���������Ӳ���Զ����
******************************************************************************************************************************************/
void EXTI_Clear(GPIO_TypeDef *GPIOx, uint32_t n)
{
GPIOx->INTCLR = (0x01 << n);
}
|