summaryrefslogtreecommitdiffstats
path: root/Core/Src/led.c
diff options
context:
space:
mode:
authorClyhtsuriva <aimeric@adjutor.xyz>2021-01-24 23:56:07 +0100
committerClyhtsuriva <aimeric@adjutor.xyz>2021-01-24 23:56:07 +0100
commit343e88525d1d13a6da5629d7137b2d8a15f9d2d8 (patch)
treef8a3ec49c01d57469bf2caf95d64eccd850efeb7 /Core/Src/led.c
parent24b20766d6dfa716888d1e0852dd0374004f6420 (diff)
downloadsimon-STM32-343e88525d1d13a6da5629d7137b2d8a15f9d2d8.tar.gz
simon-STM32-343e88525d1d13a6da5629d7137b2d8a15f9d2d8.tar.bz2
simon-STM32-343e88525d1d13a6da5629d7137b2d8a15f9d2d8.zip
Adding the whole Core
Diffstat (limited to '')
-rw-r--r--Core/Src/led.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/Core/Src/led.c b/Core/Src/led.c
new file mode 100644
index 0000000..1a5c58f
--- /dev/null
+++ b/Core/Src/led.c
@@ -0,0 +1,44 @@
+/*
+ * led.c
+ *
+ * Created on: 2 déc. 2020
+ * Author: root
+ */
+
+#include "led.h"
+
+void Led_init(LED_TypeDef *led, GPIO_TypeDef * port, uint16_t pn){
+led->gpioPort=port;
+led->pin=pn;
+
+//Activation de l'horloge sur le port en question
+
+//déterminer le numéro du port 0--> GPIOA, 1-->GPIOB, etc.
+uint8_t nb_port;
+nb_port=(uint32_t)((uint32_t *)port - IOPPERIPH_BASE)/ (uint32_t)0x400;
+//activation de l'hologe
+RCC->IOPENR|=1<<nb_port;
+
+//configuration de la pin en sortie
+led->gpioPort->MODER&=~(0b11<<2*pn);
+led->gpioPort->MODER|=(0b01<<2*pn);
+}
+
+uint8_t Led_isOn(LED_TypeDef *led){
+return ((led->gpioPort->ODR&(1<<led->pin))!=0);
+}
+
+uint8_t Led_isOff(LED_TypeDef *led){
+return ((led->gpioPort->ODR&(1<<led->pin))==0);
+}
+void Led_turnOn(LED_TypeDef *led){
+led->gpioPort->ODR|=(1<<led->pin);
+}
+
+void Led_turnOff(LED_TypeDef *led){
+led->gpioPort->ODR&=~(1<<led->pin);
+}
+
+void Led_toggle(LED_TypeDef *led){
+ led->gpioPort->ODR^=(1<<led->pin);
+}