snickerdoodle Platform Controller
firmware for STM32F0 platform controller
GPIO Functions

Functions

void sd_gpio_init (void)
 GPIO Initialization Configure pins as analog, input, output, event_out and EXTI. More...
 
void sd_gpio_exti_irqhandler (uint16_t GPIO_Pin)
 Handle EXTI interrupt request. More...
 

Detailed Description

Function Documentation

◆ sd_gpio_exti_irqhandler()

void sd_gpio_exti_irqhandler ( uint16_t  GPIO_Pin)

#include <Src/sd_gpio.c>

Handle EXTI interrupt request.

Parameters
pinSpecifies the GPIO pin connected to EXTI line
Return values
None
199 {
200  /* EXTI line interrupt detected */
201  if (__HAL_GPIO_EXTI_GET_IT(GPIO_Pin) != RESET) {
202  __HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);
203  HAL_GPIO_EXTI_Callback(GPIO_Pin);

◆ sd_gpio_init()

void sd_gpio_init ( void  )

#include <Src/sd_gpio.c>

GPIO Initialization Configure pins as analog, input, output, event_out and EXTI.

Configure the J2 pins







Configure boot select pins






Configure wireless 32kHz clock, Zynq power, and Zynq clock pins, configure watchdog timer and I$^2$C switch reset pins.





Configure button pins and Zynq power good pin




Configure Zynq programming init pin



Configure Zynq programming status pins


Configure antenna select pins

Configure Bluetooth enable pin
Configure JTAG nRST pin

69 {
70  GPIO_InitTypeDef GPIO_InitStruct;
71 
72  /* GPIO Ports Clock Enable */
73  __GPIOE_CLK_ENABLE();
74  __GPIOB_CLK_ENABLE();
75  __GPIOD_CLK_ENABLE();
76  __GPIOA_CLK_ENABLE();
77  __GPIOC_CLK_ENABLE();
78  __GPIOF_CLK_ENABLE();
79 
80 
82  GPIO_InitStruct.Pin = J2_P4_Pin | J2_P3_Pin;
83  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
84  GPIO_InitStruct.Pull = GPIO_NOPULL;
85  GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
86  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
87 
88 
90  GPIO_InitStruct.Pin = MIO5_BOOT_SELECT_Pin |
91  MIO4_BOOT_SELECT_Pin;
92  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
93  GPIO_InitStruct.Pull = GPIO_NOPULL;
94  GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
95  HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
96 
99  GPIO_InitStruct.Pin = WL_32KHZ_CLK_EN_Pin |
100  ZYNQ_POWER_EN_Pin |
101  WDI_Pin |
102  SMB_NRESET_Pin |
103  ZYNQ_CLK_EN_Pin;
104 
105  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
106  GPIO_InitStruct.Pull = GPIO_NOPULL;
107  GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
108  HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
109 
111  GPIO_InitStruct.Pin = SELECT_BUTTON_Pin |
112  RESET_BUTTON_Pin |
113  ZYNQ_POWER_GOOD_Pin;
114 
115  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
116  GPIO_InitStruct.Pull = GPIO_NOPULL;
117  HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
118 
120  GPIO_InitStruct.Pin = ZYNQ_INIT_Pin;
121  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING;
122  GPIO_InitStruct.Pull = GPIO_NOPULL;
123  HAL_GPIO_Init(ZYNQ_INIT_GPIO_Port, &GPIO_InitStruct);
124 
126  GPIO_InitStruct.Pin = ZYNQ_DONE_Pin;
127  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
128  GPIO_InitStruct.Pull = GPIO_NOPULL;
129  HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
130 
132  GPIO_InitStruct.Pin = ANT_SELECT_2_Pin |
133  ANT_SELECT_1_Pin;
134 
135  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
136  GPIO_InitStruct.Pull = GPIO_NOPULL;
137  GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
138  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
139 
141  GPIO_InitStruct.Pin = WL18xx_BT_EN_Pin;
142  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
143  GPIO_InitStruct.Pull = GPIO_NOPULL;
144  GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
145  HAL_GPIO_Init(WL18xx_BT_EN_GPIO_Port, &GPIO_InitStruct);
146 
148  GPIO_InitStruct.Pin = JA1_P2_Pin |
149  JA2_P2_Pin |
150  JB1_P2_Pin |
151  JB2_P2_Pin |
152  JC1_P2_Pin;
153 
154  GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
155  GPIO_InitStruct.Pull = GPIO_NOPULL;
156  HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
157 
159  GPIO_InitStruct.Pin = ZYNQ_JTAG_NRST_Pin;
160  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
161  GPIO_InitStruct.Pull = GPIO_NOPULL;
162  GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
163  HAL_GPIO_Init(ZYNQ_JTAG_NRST_GPIO_Port, &GPIO_InitStruct);
164 
165  /* Configure red LED pin */
166  GPIO_InitStruct.Pin = RED_Pin;
167  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
168  GPIO_InitStruct.Pull = GPIO_NOPULL;
169  GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
170  HAL_GPIO_Init(RED_GPIO_Port, &GPIO_InitStruct);
171 
172  /* Configure orange, white, blue, and green LED pins */
173  GPIO_InitStruct.Pin = ORANGE_Pin |
174  WHITE_Pin |
175  BLUE_Pin |
176  GREEN_Pin;
177 
178  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
179  GPIO_InitStruct.Pull = GPIO_NOPULL;
180  GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
181  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
182 
184  HAL_NVIC_SetPriority(EXTI2_3_IRQn, 0, 0);
185  HAL_NVIC_EnableIRQ(EXTI2_3_IRQn);
186 
187  HAL_NVIC_SetPriority(EXTI4_15_IRQn, 0, 0);