summaryrefslogtreecommitdiff
path: root/project/Core/Src/LED.c
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2025-08-31 13:25:35 -0400
committersowgro <tpoke.ferrari@gmail.com>2025-08-31 13:25:35 -0400
commit0ff718e7cd7159c30636aa323a666ac1af684f63 (patch)
tree247e13a76a15d3f826ba949a5a4d82b79a35e652 /project/Core/Src/LED.c
parent0f2ea7deaf0cba2f0ca07f6611c5a9e87d531f5b (diff)
download340-repo-Sowgro-0ff718e7cd7159c30636aa323a666ac1af684f63.tar.gz
340-repo-Sowgro-0ff718e7cd7159c30636aa323a666ac1af684f63.tar.bz2
340-repo-Sowgro-0ff718e7cd7159c30636aa323a666ac1af684f63.zip
Setup project
Diffstat (limited to 'project/Core/Src/LED.c')
-rw-r--r--project/Core/Src/LED.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/project/Core/Src/LED.c b/project/Core/Src/LED.c
new file mode 100644
index 0000000..8b1b9b2
--- /dev/null
+++ b/project/Core/Src/LED.c
@@ -0,0 +1,49 @@
+#include "LED.h"
+
+
+//******************************************************************************************
+// User LED = LD2 Green LED = PA.5
+//******************************************************************************************
+#define LED_PIN 5
+
+void LED_Init(void){
+
+ // Enable the peripheral clock of GPIO Port
+ RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN;
+
+ // GPIO Mode: Input(00), Output(01), AlterFunc(10), Analog(11, reset)
+ GPIOA->MODER &= ~(3U<<(2*LED_PIN));
+ GPIOA->MODER |= 1U<<(2*LED_PIN); // Output(01)
+
+ // GPIO Speed: Low speed (00), Medium speed (01), Fast speed (10), High speed (11)
+ GPIOA->OSPEEDR &= ~(3U<<(2*LED_PIN));
+ GPIOA->OSPEEDR |= 3U<<(2*LED_PIN); // High speed
+
+ // GPIO Output Type: Output push-pull (0, reset), Output open drain (1)
+ GPIOA->OTYPER &= ~(1U<<LED_PIN); // Push-pull
+
+ // GPIO Push-Pull: No pull-up, pull-down (00), Pull-up (01), Pull-down (10), Reserved (11)
+ GPIOA->PUPDR &= ~(3U<<(2*LED_PIN)); // No pull-up, no pull-down
+
+}
+
+//******************************************************************************************
+// Turn LED On
+//******************************************************************************************
+void LED_On(void){
+ GPIOA->ODR |= (1UL<<LED_PIN);
+}
+
+//******************************************************************************************
+// Turn LED Off
+//******************************************************************************************
+void LED_Off(void){
+ GPIOA->ODR &= ~(1UL<<LED_PIN);
+}
+
+//******************************************************************************************
+// Toggle LED
+//******************************************************************************************
+void LED_Toggle(void){
+ GPIOA->ODR ^= (1UL<<LED_PIN);
+}