Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Core/Inc/main.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ extern "C" {
// Constant Definitions
#define STATUS_LED_PIN (13)
#define GPS_ADDR (0x42)
#define GPS_RST_PIN (8)
#define LORA_RST_PIN (8)
#define SUS_POT_TRAVEL (50)
#define THERMOCOUPLE_CONVERSION (100)

Expand Down
18 changes: 13 additions & 5 deletions Core/Src/gpio.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,24 @@ void LED_Init() {
}

void GPIO_Init() {
// Enable GPIO A Clock
// Enable GPIO Clocks
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN;

// Set GPIO Pins to Output mode
// Pins reset to push pull mode
GPIOA->MODER &= ~GPIO_MODER_MODE8 & ~GPIO_MODER_MODE9; // Clear RST Pin
// Configure LoRa Reset and Interrupt Pins
GPIOA->MODER &= ~GPIO_MODER_MODE8 & ~GPIO_MODER_MODE9;
GPIOA->MODER |= (0x1 << GPIO_MODER_MODE8_Pos) | (0x0 << GPIO_MODER_MODE9_Pos);
GPIOA->OSPEEDR &= ~GPIO_OSPEEDR_OSPEED8 & ~GPIO_OSPEEDR_OSPEED9;
GPIOA->OSPEEDR |= (0x1 << GPIO_OSPEEDR_OSPEED8_Pos) | (0x1 << GPIO_OSPEEDR_OSPEED9_Pos);
GPIOA->OSPEEDR |= (0x1 << GPIO_OSPEEDR_OSPEED9_Pos);
GPIOA->PUPDR &= ~GPIO_PUPDR_PUPD8 & ~GPIO_PUPDR_PUPD9;
GPIOA->PUPDR |= (0x2 << GPIO_PUPDR_PUPD8_Pos);

// GPS Reset Pin
GPIOB->MODER &= ~GPIO_MODER_MODE8;
GPIOB->MODER |= (0x1 << GPIO_MODER_MODE8_Pos);
GPIOB->OTYPER &= ~GPIO_OTYPER_OT8; // Push Pull
GPIOB->OSPEEDR &= ~GPIO_OSPEEDR_OSPEED8;
GPIOB->PUPDR &= ~GPIO_PUPDR_PUPD8; // No Pull up/down
}

GPIO_Status GPIO_EXTI_Init(GPIO_TypeDef* GPIO, uint8_t pin) {
Expand Down
9 changes: 8 additions & 1 deletion Core/Src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ void main() {
GPIO_Init();
DMA_ADC1_Init(&ADC_Buffer);
USART3_Init();
Lora_Init();
Lora_Init();
Clear_Pin(GPIOA, LORA_RST_PIN); // Turn On LoRa Module

// Create Tasks to collect Data
Task_Status &= xTaskCreate(ADC_Task, "ADC_Task", 128, NULL, ADC_PRIORITY, NULL);
Expand Down Expand Up @@ -127,6 +128,12 @@ void GPS_Task() {
GPS_Status status;
volatile GPS_Data data;
const TickType_t GPSFrequency = 40; // 25 Hz

// Reset GPS Module
Clear_Pin(GPIOB, GPS_RST_PIN); // Turn off GPS Power
vTaskDelay(100);
Set_Pin(GPIOB, GPS_RST_PIN); // Turn on GPS Power

vTaskDelay(1000); // Delay for GPS Module to Boot
status = GPS_Init();

Expand Down