DIY Logging Volt/Ampmeter
gpio.c
Go to the documentation of this file.
1 /**
2  ******************************************************************************
3  * @file gpio.c
4  * @brief This file provides code for the configuration
5  * of all used GPIO pins.
6  ******************************************************************************
7  * @attention
8  *
9  * <h2><center>&copy; Copyright (c) 2021 STMicroelectronics.
10  * All rights reserved.</center></h2>
11  *
12  * This software component is licensed by ST under BSD 3-Clause license,
13  * the "License"; You may not use this file except in compliance with the
14  * License. You may obtain a copy of the License at:
15  * opensource.org/licenses/BSD-3-Clause
16  *
17  ******************************************************************************
18  */
19 
20 /* Includes ------------------------------------------------------------------*/
21 #include "gpio.h"
22 
23 /* USER CODE BEGIN 0 */
24 
25 /* Local variables */
26 __IO uint8_t SW0Triggered = 0;
27 __IO uint8_t SW1Triggered = 0;
28 __IO uint8_t ENCkeyTriggered = 0;
29 
30 /* USER CODE END 0 */
31 
32 /*----------------------------------------------------------------------------*/
33 /* Configure GPIO */
34 /*----------------------------------------------------------------------------*/
35 /* USER CODE BEGIN 1 */
36 
37 // SW0 = PA0 EXTI0
38 // SW1 = PA1 EXTI1
39 // ENC-KEY = PB5 EXTI5
40 
41 uint8_t getSW0(void)
42 {
43  return (SW0Triggered);
44 }
45 
46 void setSW0(uint8_t value)
47 {
48  SW0Triggered = value;
49 }
50 
51 uint8_t getSW1(void)
52 {
53  return (SW1Triggered);
54 }
55 
56 void setSW1(uint8_t value)
57 {
58  SW1Triggered = value;
59 }
60 
61 uint8_t getENCkey(void)
62 {
63  return (ENCkeyTriggered);
64 }
65 
66 void setENCkey(uint8_t value)
67 {
68  ENCkeyTriggered = value;
69 }
70 
71 
72 /* USER CODE END 1 */
73 
74 /** Configure pins as
75  * Analog
76  * Input
77  * Output
78  * EVENT_OUT
79  * EXTI
80 */
81 void MX_GPIO_Init(void)
82 {
83  LL_EXTI_InitTypeDef EXTI_InitStruct = {0};
84  LL_GPIO_InitTypeDef GPIO_InitStruct = {0};
85 
86  /* GPIO Ports Clock Enable */
87  LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOC);
88  LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOD);
89  LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOA);
90  LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOB);
91 
92  /**/
93  LL_GPIO_ResetOutputPin(GPIOB, LED_Pin|Buzzer_Pin);
94 
95  /**/
96  LL_GPIO_ResetOutputPin(Relay_GPIO_Port, Relay_Pin);
97 
98  /**/
100 
101  /**/
102  LL_GPIO_AF_SetEXTISource(LL_GPIO_AF_EXTI_PORTA, LL_GPIO_AF_EXTI_LINE0);
103 
104  /**/
105  LL_GPIO_AF_SetEXTISource(LL_GPIO_AF_EXTI_PORTA, LL_GPIO_AF_EXTI_LINE1);
106 
107  /**/
108  LL_GPIO_AF_SetEXTISource(LL_GPIO_AF_EXTI_PORTB, LL_GPIO_AF_EXTI_LINE5);
109 
110  /**/
111  EXTI_InitStruct.Line_0_31 = LL_EXTI_LINE_0;
112  EXTI_InitStruct.LineCommand = ENABLE;
113  EXTI_InitStruct.Mode = LL_EXTI_MODE_IT;
114  EXTI_InitStruct.Trigger = LL_EXTI_TRIGGER_FALLING;
115  LL_EXTI_Init(&EXTI_InitStruct);
116 
117  /**/
118  EXTI_InitStruct.Line_0_31 = LL_EXTI_LINE_1;
119  EXTI_InitStruct.LineCommand = ENABLE;
120  EXTI_InitStruct.Mode = LL_EXTI_MODE_IT;
121  EXTI_InitStruct.Trigger = LL_EXTI_TRIGGER_FALLING;
122  LL_EXTI_Init(&EXTI_InitStruct);
123 
124  /**/
125  EXTI_InitStruct.Line_0_31 = LL_EXTI_LINE_5;
126  EXTI_InitStruct.LineCommand = ENABLE;
127  EXTI_InitStruct.Mode = LL_EXTI_MODE_IT;
128  EXTI_InitStruct.Trigger = LL_EXTI_TRIGGER_FALLING;
129  LL_EXTI_Init(&EXTI_InitStruct);
130 
131  /**/
132  LL_GPIO_SetPinMode(SW0_GPIO_Port, SW0_Pin, LL_GPIO_MODE_FLOATING);
133 
134  /**/
135  LL_GPIO_SetPinMode(SW1_GPIO_Port, SW1_Pin, LL_GPIO_MODE_FLOATING);
136 
137  /**/
138  LL_GPIO_SetPinMode(ENC_Key_GPIO_Port, ENC_Key_Pin, LL_GPIO_MODE_FLOATING);
139 
140  /**/
141  GPIO_InitStruct.Pin = V_ENin_Pin;
142  GPIO_InitStruct.Mode = LL_GPIO_MODE_FLOATING;
143  LL_GPIO_Init(V_ENin_GPIO_Port, &GPIO_InitStruct);
144 
145  /**/
146  GPIO_InitStruct.Pin = A_ENin_Pin;
147  GPIO_InitStruct.Mode = LL_GPIO_MODE_FLOATING;
148  LL_GPIO_Init(A_ENin_GPIO_Port, &GPIO_InitStruct);
149 
150  /**/
151  GPIO_InitStruct.Pin = LED_Pin|Buzzer_Pin|UART1_3V3out_Pin|UART1_ENout_Pin
153  GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
154  GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_LOW;
155  GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
156  LL_GPIO_Init(GPIOB, &GPIO_InitStruct);
157 
158  /**/
159  GPIO_InitStruct.Pin = Relay_Pin;
160  GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
161  GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_LOW;
162  GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
163  LL_GPIO_Init(Relay_GPIO_Port, &GPIO_InitStruct);
164 
165  /* EXTI interrupt init*/
172 }
173 
174 /* USER CODE BEGIN 2 */
175 
176 /* USER CODE END 2 */
177 
178 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
SW0_GPIO_Port
#define SW0_GPIO_Port
Definition: main.h:111
Relay_Pin
#define Relay_Pin
Definition: main.h:126
getSW0
uint8_t getSW0(void)
Definition: gpio.c:41
NVIC_GetPriorityGrouping
#define NVIC_GetPriorityGrouping
Definition: core_armv8mbl.h:1189
SW1_GPIO_Port
#define SW1_GPIO_Port
Definition: main.h:114
setSW1
void setSW1(uint8_t value)
Definition: gpio.c:56
EXTI1_IRQn
@ EXTI1_IRQn
Definition: stm32f103xb.h:90
V_ENin_GPIO_Port
#define V_ENin_GPIO_Port
Definition: main.h:117
getENCkey
uint8_t getENCkey(void)
Definition: gpio.c:61
NVIC_EncodePriority
__STATIC_INLINE uint32_t NVIC_EncodePriority(uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)
Encode Priority.
Definition: core_armv8mbl.h:1496
ENABLE
@ ENABLE
Definition: stm32f1xx.h:160
EXTI9_5_IRQn
@ EXTI9_5_IRQn
Definition: stm32f103xb.h:106
UART1_DTRout_Pin
#define UART1_DTRout_Pin
Definition: main.h:133
setENCkey
void setENCkey(uint8_t value)
Definition: gpio.c:66
UART1_ENout_Pin
#define UART1_ENout_Pin
Definition: main.h:131
ENC_Key_Pin
#define ENC_Key_Pin
Definition: main.h:128
Buzzer_Pin
#define Buzzer_Pin
Definition: main.h:122
A_ENin_Pin
#define A_ENin_Pin
Definition: main.h:118
ENCkeyTriggered
__IO uint8_t ENCkeyTriggered
Definition: gpio.c:28
getSW1
uint8_t getSW1(void)
Definition: gpio.c:51
setSW0
void setSW0(uint8_t value)
Definition: gpio.c:46
SW1Triggered
__IO uint8_t SW1Triggered
Definition: gpio.c:27
GPIOB
#define GPIOB
Definition: stm32f103xb.h:666
SW0_Pin
#define SW0_Pin
Definition: main.h:110
LED_Pin
#define LED_Pin
Definition: main.h:120
__IO
#define __IO
Definition: core_armv8mbl.h:196
NVIC_SetPriority
#define NVIC_SetPriority
Definition: core_armv8mbl.h:1197
Relay_GPIO_Port
#define Relay_GPIO_Port
Definition: main.h:127
UART1_3V3out_Pin
#define UART1_3V3out_Pin
Definition: main.h:124
gpio.h
This file contains all the function prototypes for the gpio.c file.
ENC_Key_GPIO_Port
#define ENC_Key_GPIO_Port
Definition: main.h:129
MX_GPIO_Init
void MX_GPIO_Init(void)
Definition: gpio.c:81
V_ENin_Pin
#define V_ENin_Pin
Definition: main.h:116
A_ENin_GPIO_Port
#define A_ENin_GPIO_Port
Definition: main.h:119
NVIC_EnableIRQ
#define NVIC_EnableIRQ
Definition: core_armv8mbl.h:1190
EXTI0_IRQn
@ EXTI0_IRQn
Definition: stm32f103xb.h:89
SW1_Pin
#define SW1_Pin
Definition: main.h:113
SW0Triggered
__IO uint8_t SW0Triggered
Definition: gpio.c:26