Changeset - 7e9d097bfe72
[Not reviewed]
default
0 6 0
Nick Orlando (NEO) - 10 years ago 2016-07-29 23:53:43
nick.orlando67@gmail.com
Added interrupts to code
6 files changed with 84 insertions and 16 deletions:
0 comments (0 inline, 0 general)
.cproject
Show inline comments
 
@@ -42,13 +42,13 @@
 
							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.size.894265291" name="Size command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.size" value="size" valueType="string"/>
 
							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.make.886060440" name="Build command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.make" value="make" valueType="string"/>
 
							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm.153446908" name="Remove command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm" value="rm" valueType="string"/>
 
							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash.2133363735" name="Create flash image" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash" value="true" valueType="boolean"/>
 
							<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize.737083294" name="Print size" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize" value="true" valueType="boolean"/>
 
							<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1641379360" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
 
							<builder buildPath="${workspace_loc:/S3467-MiniBuoy-BT-Sensor-Software}/Debug" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1145700756" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder">
 
							<builder buildPath="${workspace_loc:/S3467-MiniBuoy-BT-Sensor-Software}/Debug" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1145700756" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder">
 
								<outputEntries>
 
									<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
 
									<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Release"/>
 
								</outputEntries>
 
							</builder>
 
							<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.1885536253" name="Cross ARM GNU Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
inc/gpio.h
Show inline comments
 
@@ -11,11 +11,22 @@
 
 
// Define Fuse Closed drive
 
#define GATE_DRIVE_Pin GPIO_PIN_3
 
#define GATE_DRIVE_GPIO_Port GPIOA
 
#define GATE_DRIVE GATE_DRIVE_GPIO_Port , GATE_DRIVE_Pin
 
 
#define SW_A_Pin GPIO_PIN_6
 
#define SW_A_GPIO_Port GPIOA
 
#define SW_BTN_Pin GPIO_PIN_8
 
#define SW_BTN_GPIO_Port GPIOA
 
#define SW_C_Pin GPIO_PIN_9
 
#define SW_C_GPIO_Port GPIOA
 
#define SW_D_Pin GPIO_PIN_10
 
#define SW_D_GPIO_Port GPIOA
 
#define SW_B_Pin GPIO_PIN_15
 
#define SW_B_GPIO_Port GPIOA
 
 
 
void gpio_init(void);
 
void gpio_led_blueblink(uint8_t num_blinks);
 
 
#endif
src/gpio.c
Show inline comments
 
@@ -29,11 +29,25 @@ void gpio_init(void)
 
	GPIO_InitStruct.Pin = GATE_DRIVE_Pin;
 
	GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
 
	GPIO_InitStruct.Pull = GPIO_NOPULL;
 
	GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
 
	HAL_GPIO_Init(GATE_DRIVE_GPIO_Port, &GPIO_InitStruct);
 
 
 
	GPIO_InitStruct.Pin = SW_A_Pin|SW_BTN_Pin|SW_C_Pin|SW_D_Pin
 
	                          |SW_B_Pin;
 
	GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
 
	GPIO_InitStruct.Pull = GPIO_PULLUP;
 
	HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
 
 
	/* EXTI interrupt init*/
 
	HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0);
 
	HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
 
 
	HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);
 
	HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
 
 
	// Define startup State
 
	HAL_GPIO_WritePin(LED_RED, 1);
 
	HAL_GPIO_WritePin(GATE_DRIVE, 1);
 
	HAL_GPIO_WritePin(LED_RED, 0);
 
	HAL_GPIO_WritePin(GATE_DRIVE, 0);
 
 
}
src/interrupts.c
Show inline comments
 
@@ -4,14 +4,56 @@
 
 
#include "stm32f3xx_hal.h"
 
#include "stm32f3xx.h"
 
 
#include "interrupts.h"
 
 
#include "gpio.h"
 
 
// Systick interrupt
 
void SysTick_Handler(void)
 
{
 
  HAL_IncTick();
 
  HAL_SYSTICK_IRQHandler();
 
}
 
 
void EXTI9_5_IRQHandler(void)
 
{
 
  /* USER CODE BEGIN EXTI9_5_IRQn 0 */
 
 
  /* USER CODE END EXTI9_5_IRQn 0 */
 
  HAL_GPIO_EXTI_IRQHandler(SW_A_Pin);
 
  HAL_GPIO_EXTI_IRQHandler(SW_BTN_Pin);
 
  HAL_GPIO_EXTI_IRQHandler(SW_C_Pin);
 
  /* USER CODE BEGIN EXTI9_5_IRQn 1 */
 
 
  /* USER CODE END EXTI9_5_IRQn 1 */
 
}
 
 
void EXTI15_10_IRQHandler(void)
 
{
 
  /* USER CODE BEGIN EXTI15_10_IRQn 0 */
 
 
  /* USER CODE END EXTI15_10_IRQn 0 */
 
  HAL_GPIO_EXTI_IRQHandler(SW_D_Pin);
 
  HAL_GPIO_EXTI_IRQHandler(SW_B_Pin);
 
  /* USER CODE BEGIN EXTI15_10_IRQn 1 */
 
 
  /* USER CODE END EXTI15_10_IRQn 1 */
 
}
 
 
uint32_t last_button_press = 0;
 
 
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
 
{
 
	switch(GPIO_Pin)
 
	{
 
		case SW_BTN_Pin:
 
		{
 
			if(HAL_GetTick() > last_button_press + 100)
 
			{
 
				HAL_GPIO_TogglePin(LED_RED);
 
				last_button_press = HAL_GetTick();
 
			}
 
		} break;
 
	}
 
}
src/main.c
Show inline comments
 
@@ -21,35 +21,36 @@ int main(void)
 
	gpio_init();
 
	ssd1306_init();
 
	ssd1306_drawlogo();
 
	ssd1306_clearscreen();
 
 
	// ssd1306_drawstring(const char *dataPtr, unsigned char row, unsigned char xPos)
 
	ssd1306_drawstring("Freaking test", 0, 0);
 
 
	int32_t my_variable = -123;
 
	ssd1306_drawstring("[ ProtoFuse ]", 0, 0);
 
	ssd1306_drawstring("HW v1.0   SW v0.1", 1, 0);
 
 
	char buffer[256];
 
	snprintf(buffer, 256, "My Variable: %d", my_variable);
 
	ssd1306_drawstring(buffer, 2, 0);
 
	int32_t battery_adc_count = 0;
 
 
 
	flash_init();
 
	watchdog_init();
 
 
	// Software timers
 
	uint32_t last_blink_time = HAL_GetTick();
 
 
	while (1)
 
	{
 
		// Grab and transmit data
 
		if(HAL_GetTick() - last_blink_time > 100)
 
		if(HAL_GetTick() - last_blink_time > 1000)
 
		{
 
			HAL_GPIO_TogglePin(LED_RED);
 
			char buffer[256];
 
			snprintf(buffer, 256, "My Variable: %d", battery_adc_count);
 
			ssd1306_drawstring(buffer, 2, 0);
 
//			HAL_GPIO_TogglePin(LED_RED);
 
			battery_adc_count++;
 
			last_blink_time = HAL_GetTick();
 
		}
 
 
		// Process CAN messages and LED state
 
		watchdog_feed();
 
	}
 
}
 
 
src/ssd1306.c
Show inline comments
 
@@ -86,16 +86,16 @@ void ssd1306_init(void)
 
  WriteCommand(0x00);
 
  WriteCommand(0x40 | 0x00); // line #0
 
  WriteCommand(0x8D);
 
  WriteCommand(0x14); //10 or 14 if not externalvcc
 
  WriteCommand(0x20);
 
  WriteCommand(0x00);
 
//  WriteCommand(0xA0 | 0x1); // segremap (normal)
 
  WriteCommand(0xA0); // segremap (flip)
 
//  WriteCommand(0xC8); // comscandec (normal)
 
  WriteCommand(0xC0); // comscandec (flip)
 
  WriteCommand(0xA0 | 0x1); // segremap (normal)
 
//  WriteCommand(0xA0); // segremap (flip)
 
  WriteCommand(0xC8); // comscandec (normal)
 
//  WriteCommand(0xC0); // comscandec (flip)
 
  WriteCommand(0xDA); // setcompins
 
  WriteCommand(0x02);
 
  WriteCommand(0x81); // contrast
 
  WriteCommand(0x0F); // contrast value. 8f is a good one.
 
  WriteCommand(0xD9);
 
  WriteCommand(0xF1); //22 or F1 if not externalvcc
0 comments (0 inline, 0 general)