mbed library sources. Supersedes mbed-src.
Fork of mbed by
targets/hal/TARGET_WIZNET/TARGET_W7500x/W7500x_Peripheral_Library/W7500x_exti.c@148:4802eb17e82b, 2016-10-17 (annotated)
- Committer:
- rodriguise
- Date:
- Mon Oct 17 18:47:01 2016 +0000
- Revision:
- 148:4802eb17e82b
- Parent:
- 144:ef7eb2e8f9f7
backup
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
<> | 144:ef7eb2e8f9f7 | 1 | #include "W7500x.h" |
<> | 144:ef7eb2e8f9f7 | 2 | #include "W7500x_exti.h" |
<> | 144:ef7eb2e8f9f7 | 3 | #include "W7500x_gpio.h" |
<> | 144:ef7eb2e8f9f7 | 4 | |
<> | 144:ef7eb2e8f9f7 | 5 | |
<> | 144:ef7eb2e8f9f7 | 6 | /** |
<> | 144:ef7eb2e8f9f7 | 7 | * @brief Deinitializes the EXTI peripheral registers to their default reset values. |
<> | 144:ef7eb2e8f9f7 | 8 | * @param None |
<> | 144:ef7eb2e8f9f7 | 9 | * @retval None |
<> | 144:ef7eb2e8f9f7 | 10 | */ |
<> | 144:ef7eb2e8f9f7 | 11 | void EXTI_DeInit(void) |
<> | 144:ef7eb2e8f9f7 | 12 | { |
<> | 144:ef7eb2e8f9f7 | 13 | uint32_t i, loop =16; |
<> | 144:ef7eb2e8f9f7 | 14 | for(i=0; i<loop; i++) |
<> | 144:ef7eb2e8f9f7 | 15 | { |
<> | 144:ef7eb2e8f9f7 | 16 | EXTI_PA->Port[i] = 0x00; |
<> | 144:ef7eb2e8f9f7 | 17 | EXTI_PB->Port[i] = 0x00; |
<> | 144:ef7eb2e8f9f7 | 18 | EXTI_PC->Port[i] = 0x00; |
<> | 144:ef7eb2e8f9f7 | 19 | } |
<> | 144:ef7eb2e8f9f7 | 20 | for(i=0; i<5; i++) |
<> | 144:ef7eb2e8f9f7 | 21 | { |
<> | 144:ef7eb2e8f9f7 | 22 | EXTI_PD->Port[i] = 0x00; |
<> | 144:ef7eb2e8f9f7 | 23 | } |
<> | 144:ef7eb2e8f9f7 | 24 | } |
<> | 144:ef7eb2e8f9f7 | 25 | |
<> | 144:ef7eb2e8f9f7 | 26 | /** |
<> | 144:ef7eb2e8f9f7 | 27 | * @brief Initializes the EXTI peripheral according to the specified |
<> | 144:ef7eb2e8f9f7 | 28 | * parameters in the EXTI_InitStruct. |
<> | 144:ef7eb2e8f9f7 | 29 | * @param EXTI_InitStruct: pointer to a EXTI_InitTypeDef structure |
<> | 144:ef7eb2e8f9f7 | 30 | * that contains the configuration information for the EXTI peripheral. |
<> | 144:ef7eb2e8f9f7 | 31 | * @retval None |
<> | 144:ef7eb2e8f9f7 | 32 | */ |
<> | 144:ef7eb2e8f9f7 | 33 | void EXTI_Init(PAD_Type Px, EXTI_InitTypeDef* EXTI_InitStruct) |
<> | 144:ef7eb2e8f9f7 | 34 | { |
<> | 144:ef7eb2e8f9f7 | 35 | uint32_t pinpos = 0x00, pos = 0x00, currentpin = 0x00, loop = 16; |
<> | 144:ef7eb2e8f9f7 | 36 | P_Port_Def *px_exti; |
<> | 144:ef7eb2e8f9f7 | 37 | |
<> | 144:ef7eb2e8f9f7 | 38 | assert_param(IS_PAD_TYPE(Px)); |
<> | 144:ef7eb2e8f9f7 | 39 | |
<> | 144:ef7eb2e8f9f7 | 40 | if (Px == PAD_PA) px_exti = EXTI_PA; |
<> | 144:ef7eb2e8f9f7 | 41 | else if (Px == PAD_PB) px_exti = EXTI_PB; |
<> | 144:ef7eb2e8f9f7 | 42 | else if (Px == PAD_PC) px_exti = EXTI_PC; |
<> | 144:ef7eb2e8f9f7 | 43 | else |
<> | 144:ef7eb2e8f9f7 | 44 | { |
<> | 144:ef7eb2e8f9f7 | 45 | px_exti = (P_Port_Def*)EXTI_PD; |
<> | 144:ef7eb2e8f9f7 | 46 | loop = 5; |
<> | 144:ef7eb2e8f9f7 | 47 | } |
<> | 144:ef7eb2e8f9f7 | 48 | |
<> | 144:ef7eb2e8f9f7 | 49 | for(pinpos = 0x00; pinpos < loop; pinpos++) |
<> | 144:ef7eb2e8f9f7 | 50 | { |
<> | 144:ef7eb2e8f9f7 | 51 | pos = ((uint32_t)0x01) << pinpos; |
<> | 144:ef7eb2e8f9f7 | 52 | |
<> | 144:ef7eb2e8f9f7 | 53 | currentpin = (EXTI_InitStruct->EXTI_Line) & pos; |
<> | 144:ef7eb2e8f9f7 | 54 | if(currentpin == pos) |
<> | 144:ef7eb2e8f9f7 | 55 | { |
<> | 144:ef7eb2e8f9f7 | 56 | px_exti->Port[pinpos] |= EXTI_Px_INTEN_ENABLE; |
<> | 144:ef7eb2e8f9f7 | 57 | |
<> | 144:ef7eb2e8f9f7 | 58 | if(EXTI_InitStruct->EXTI_Trigger == EXTI_Trigger_Rising) |
<> | 144:ef7eb2e8f9f7 | 59 | px_exti->Port[pinpos] |= EXTI_Px_INTPOR_RISING_EDGE; |
<> | 144:ef7eb2e8f9f7 | 60 | else |
<> | 144:ef7eb2e8f9f7 | 61 | px_exti->Port[pinpos] |= EXTI_Px_INTPOR_FALLING_EDGE; |
<> | 144:ef7eb2e8f9f7 | 62 | } |
<> | 144:ef7eb2e8f9f7 | 63 | } |
<> | 144:ef7eb2e8f9f7 | 64 | |
<> | 144:ef7eb2e8f9f7 | 65 | } |
<> | 144:ef7eb2e8f9f7 | 66 | |
<> | 144:ef7eb2e8f9f7 | 67 | void EXTI_Polarity_Set(PAD_Type Px, uint16_t GPIO_Pin, uint16_t Polarity ) |
<> | 144:ef7eb2e8f9f7 | 68 | { |
<> | 144:ef7eb2e8f9f7 | 69 | uint32_t pinpos = 0x00, pos = 0x00, currentpin = 0x00, loop = 16; |
<> | 144:ef7eb2e8f9f7 | 70 | P_Port_Def *px_exti; |
<> | 144:ef7eb2e8f9f7 | 71 | |
<> | 144:ef7eb2e8f9f7 | 72 | assert_param(IS_PAD_TYPE(Px)); |
<> | 144:ef7eb2e8f9f7 | 73 | |
<> | 144:ef7eb2e8f9f7 | 74 | if (Px == PAD_PA) px_exti = EXTI_PA; |
<> | 144:ef7eb2e8f9f7 | 75 | else if (Px == PAD_PB) px_exti = EXTI_PB; |
<> | 144:ef7eb2e8f9f7 | 76 | else if (Px == PAD_PC) px_exti = EXTI_PC; |
<> | 144:ef7eb2e8f9f7 | 77 | else |
<> | 144:ef7eb2e8f9f7 | 78 | { |
<> | 144:ef7eb2e8f9f7 | 79 | px_exti = (P_Port_Def*)EXTI_PD; |
<> | 144:ef7eb2e8f9f7 | 80 | loop = 5; |
<> | 144:ef7eb2e8f9f7 | 81 | } |
<> | 144:ef7eb2e8f9f7 | 82 | |
<> | 144:ef7eb2e8f9f7 | 83 | for(pinpos = 0x00; pinpos < loop; pinpos++) |
<> | 144:ef7eb2e8f9f7 | 84 | { |
<> | 144:ef7eb2e8f9f7 | 85 | pos = ((uint32_t)0x01) << pinpos; |
<> | 144:ef7eb2e8f9f7 | 86 | |
<> | 144:ef7eb2e8f9f7 | 87 | currentpin = GPIO_Pin & pos; |
<> | 144:ef7eb2e8f9f7 | 88 | if(currentpin == pos) |
<> | 144:ef7eb2e8f9f7 | 89 | { |
<> | 144:ef7eb2e8f9f7 | 90 | if(Polarity == EXTI_Trigger_Rising) |
<> | 144:ef7eb2e8f9f7 | 91 | px_exti->Port[pinpos] |= EXTI_Px_INTPOR_RISING_EDGE; |
<> | 144:ef7eb2e8f9f7 | 92 | else |
<> | 144:ef7eb2e8f9f7 | 93 | px_exti->Port[pinpos] |= EXTI_Px_INTPOR_FALLING_EDGE; |
<> | 144:ef7eb2e8f9f7 | 94 | } |
<> | 144:ef7eb2e8f9f7 | 95 | } |
<> | 144:ef7eb2e8f9f7 | 96 | |
<> | 144:ef7eb2e8f9f7 | 97 | } |
<> | 144:ef7eb2e8f9f7 | 98 | |
<> | 144:ef7eb2e8f9f7 | 99 | /** |
<> | 144:ef7eb2e8f9f7 | 100 | * @brief Fills each EXTI_InitStruct member with its reset value. |
<> | 144:ef7eb2e8f9f7 | 101 | * @param EXTI_InitStruct: pointer to a EXTI_InitTypeDef structure which will |
<> | 144:ef7eb2e8f9f7 | 102 | * be initialized. |
<> | 144:ef7eb2e8f9f7 | 103 | * @retval None |
<> | 144:ef7eb2e8f9f7 | 104 | */ |
<> | 144:ef7eb2e8f9f7 | 105 | void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct) |
<> | 144:ef7eb2e8f9f7 | 106 | { |
<> | 144:ef7eb2e8f9f7 | 107 | EXTI_InitStruct->EXTI_Line = 0xFF; |
<> | 144:ef7eb2e8f9f7 | 108 | EXTI_InitStruct->EXTI_Mode = EXTI_Mode_Interrupt; |
<> | 144:ef7eb2e8f9f7 | 109 | EXTI_InitStruct->EXTI_Trigger = EXTI_Trigger_Falling; |
<> | 144:ef7eb2e8f9f7 | 110 | } |
<> | 144:ef7eb2e8f9f7 | 111 | |
<> | 144:ef7eb2e8f9f7 | 112 | uint16_t EXTI_Px_GetEXTEN(PAD_Type Px) |
<> | 144:ef7eb2e8f9f7 | 113 | { |
<> | 144:ef7eb2e8f9f7 | 114 | uint32_t i, loop = 16; |
<> | 144:ef7eb2e8f9f7 | 115 | uint16_t ret=0; |
<> | 144:ef7eb2e8f9f7 | 116 | P_Port_Def *px_exti; |
<> | 144:ef7eb2e8f9f7 | 117 | |
<> | 144:ef7eb2e8f9f7 | 118 | assert_param(IS_PAD_TYPE(Px)); |
<> | 144:ef7eb2e8f9f7 | 119 | |
<> | 144:ef7eb2e8f9f7 | 120 | if (Px == PAD_PA) px_exti = EXTI_PA; |
<> | 144:ef7eb2e8f9f7 | 121 | else if (Px == PAD_PB) px_exti = EXTI_PB; |
<> | 144:ef7eb2e8f9f7 | 122 | else if (Px == PAD_PC) px_exti = EXTI_PC; |
<> | 144:ef7eb2e8f9f7 | 123 | else |
<> | 144:ef7eb2e8f9f7 | 124 | { |
<> | 144:ef7eb2e8f9f7 | 125 | px_exti = (P_Port_Def*)EXTI_PD; |
<> | 144:ef7eb2e8f9f7 | 126 | loop = 5; |
<> | 144:ef7eb2e8f9f7 | 127 | } |
<> | 144:ef7eb2e8f9f7 | 128 | |
<> | 144:ef7eb2e8f9f7 | 129 | for(i = 0x00; i < loop; i++) |
<> | 144:ef7eb2e8f9f7 | 130 | { |
<> | 144:ef7eb2e8f9f7 | 131 | ret |= (((px_exti->Port[i]&0x2)>>1)<<i); |
<> | 144:ef7eb2e8f9f7 | 132 | } |
<> | 144:ef7eb2e8f9f7 | 133 | return ret; |
<> | 144:ef7eb2e8f9f7 | 134 | } |
<> | 144:ef7eb2e8f9f7 | 135 | |
<> | 144:ef7eb2e8f9f7 | 136 | uint16_t EXTI_Px_GetEXTINTPOL(PAD_Type Px) |
<> | 144:ef7eb2e8f9f7 | 137 | { |
<> | 144:ef7eb2e8f9f7 | 138 | uint32_t i, loop = 16; |
<> | 144:ef7eb2e8f9f7 | 139 | uint16_t ret=0; |
<> | 144:ef7eb2e8f9f7 | 140 | P_Port_Def *px_exti; |
<> | 144:ef7eb2e8f9f7 | 141 | |
<> | 144:ef7eb2e8f9f7 | 142 | assert_param(IS_PAD_TYPE(Px)); |
<> | 144:ef7eb2e8f9f7 | 143 | |
<> | 144:ef7eb2e8f9f7 | 144 | if (Px == PAD_PA) px_exti = EXTI_PA; |
<> | 144:ef7eb2e8f9f7 | 145 | else if (Px == PAD_PB) px_exti = EXTI_PB; |
<> | 144:ef7eb2e8f9f7 | 146 | else if (Px == PAD_PC) px_exti = EXTI_PC; |
<> | 144:ef7eb2e8f9f7 | 147 | else |
<> | 144:ef7eb2e8f9f7 | 148 | { |
<> | 144:ef7eb2e8f9f7 | 149 | px_exti = (P_Port_Def*)EXTI_PD; |
<> | 144:ef7eb2e8f9f7 | 150 | loop = 5; |
<> | 144:ef7eb2e8f9f7 | 151 | } |
<> | 144:ef7eb2e8f9f7 | 152 | |
<> | 144:ef7eb2e8f9f7 | 153 | for(i = 0x00; i < loop; i++) |
<> | 144:ef7eb2e8f9f7 | 154 | { |
<> | 144:ef7eb2e8f9f7 | 155 | ret |= ((px_exti->Port[i]&0x1)<<i); |
<> | 144:ef7eb2e8f9f7 | 156 | } |
<> | 144:ef7eb2e8f9f7 | 157 | return ret; |
<> | 144:ef7eb2e8f9f7 | 158 | } |