mbed library sources. Supersedes mbed-src.

Fork of mbed by teralytic

Committer:
rodriguise
Date:
Mon Oct 17 18:47:01 2016 +0000
Revision:
148:4802eb17e82b
Parent:
144:ef7eb2e8f9f7
backup

Who changed what in which revision?

UserRevisionLine numberNew 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 }