First test version to sample temperature input and blink LEDs
This commit is contained in:
parent
284f2b26c4
commit
ad7badba56
27
main.c
27
main.c
@ -1,27 +0,0 @@
|
|||||||
/*
|
|
||||||
* main.c
|
|
||||||
*
|
|
||||||
* Created on: Apr 25, 2015
|
|
||||||
* Author: mari
|
|
||||||
*/
|
|
||||||
#include <stm32f4xx.h>
|
|
||||||
//include <arm_math.h>
|
|
||||||
#include <system_stm32f4xx.h>
|
|
||||||
|
|
||||||
#define OUTPUT(pin) (0b01 << (pin * 2))
|
|
||||||
|
|
||||||
|
|
||||||
int main() {
|
|
||||||
|
|
||||||
RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN;
|
|
||||||
__DSB();
|
|
||||||
GPIOD->MODER = OUTPUT(12);
|
|
||||||
SysTick_Config(8*1680000);
|
|
||||||
while(1);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void SysTick_Handler()
|
|
||||||
{
|
|
||||||
GPIOD->ODR ^= (1<<12);
|
|
||||||
}
|
|
@ -7,13 +7,19 @@ CFILES = main.c syscalls.c UART/uart.c cmsis_boot/system_stm32f4xx.c
|
|||||||
ASFILES = boot/startup_stm32f4xx.S
|
ASFILES = boot/startup_stm32f4xx.S
|
||||||
INCLUDEPATH = -Iboot -Imathlib -Icmsis -Icmsis_boot -IUART
|
INCLUDEPATH = -Iboot -Imathlib -Icmsis -Icmsis_boot -IUART
|
||||||
|
|
||||||
|
OBJDIR = obj
|
||||||
target = reflow-controller
|
target = reflow-controller
|
||||||
LIBRARYPATH = -L. -Lmathlib
|
LIBRARYPATH = -L. -Lmathlib
|
||||||
LIBRARIES = # -larm_cortexM4lf_math
|
LIBRARIES = # -larm_cortexM4lf_math
|
||||||
|
|
||||||
DEFINES = -DSTM32F407xx -DSTM32F4XX -DARM_MATH_CM4
|
DEFINES = -DSTM32F407xx -DSTM32F4XX -DARM_MATH_CM4
|
||||||
mapfile = qttemplate
|
mapfile = memory-mapping
|
||||||
|
|
||||||
|
ifneq ($(VERBOSE),true)
|
||||||
|
QUIET=@
|
||||||
|
else
|
||||||
|
QUIET=
|
||||||
|
endif
|
||||||
|
|
||||||
##Custom Files###
|
##Custom Files###
|
||||||
|
|
||||||
@ -22,50 +28,60 @@ mapfile = qttemplate
|
|||||||
###################################################################################
|
###################################################################################
|
||||||
CC=arm-none-eabi-gcc
|
CC=arm-none-eabi-gcc
|
||||||
OBJCOPY=arm-none-eabi-objcopy
|
OBJCOPY=arm-none-eabi-objcopy
|
||||||
|
OBJDUMP=arm-none-eabi-objdump
|
||||||
|
SIZE=arm-none-eabi-size
|
||||||
|
|
||||||
LFLAGS = -mlittle-endian -mthumb -mcpu=cortex-m4 -mthumb-interwork
|
LFLAGS = -mlittle-endian -mthumb -mcpu=cortex-m4 -mthumb-interwork
|
||||||
LFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 --disable-newlib-supplied-syscalls -nostartfiles
|
LFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 --disable-newlib-supplied-syscalls -nostartfiles
|
||||||
LFLAGS += -Tstm32f407vet6_flash.ld -Wl,-Map=$(mapfile).map
|
LFLAGS += -Tstm32f407vet6_flash.ld -Wl,-Map=$(mapfile).map
|
||||||
|
|
||||||
CFLAGS = -c -fmessage-length=0 -mlittle-endian -mthumb -mcpu=cortex-m4 -mthumb-interwork
|
CFLAGS = -c -fmessage-length=0 -mlittle-endian -mthumb -mcpu=cortex-m4 -mthumb-interwork
|
||||||
CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 -nostartfiles
|
CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 -nostartfiles -O0 -g
|
||||||
|
|
||||||
####################################################################################
|
####################################################################################
|
||||||
|
|
||||||
OBJ = $(CFILES:%.c=%.o)
|
OBJ = $(CFILES:%.c=$(OBJDIR)/%.c.o)
|
||||||
OBJ += $(ASFILES:%.S=%.o)
|
ASOBJ += $(ASFILES:%.S=$(OBJDIR)/%.S.o)
|
||||||
|
|
||||||
default: $(target).elf
|
default: $(target).elf
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
%.bin: %.elf
|
%.bin: %.elf
|
||||||
$(OBJCOPY) -O binary $^ $@
|
$(QUIET)$(OBJCOPY) -O binary $^ $@
|
||||||
%.hex: %.elf
|
%.hex: %.elf
|
||||||
$(OBJCOPY) -O ihex $^ $@
|
$(QUIET)$(OBJCOPY) -O ihex $^ $@
|
||||||
|
|
||||||
|
|
||||||
#Linking
|
#Linking
|
||||||
$(target).elf: $(OBJ)
|
$(target).elf: $(OBJ) $(ASOBJ)
|
||||||
$(CC) $(LFLAGS) $(LIBRARYPATH) -o $@ $^ $(LIBRARIES)
|
@echo [LD] $@
|
||||||
|
$(QUIET)$(CC) $(LFLAGS) $(LIBRARYPATH) -o $@ $^ $(LIBRARIES)
|
||||||
|
$(QUIET)$(SIZE) $@
|
||||||
|
|
||||||
#Compiling
|
#Compiling
|
||||||
%.o: %.c
|
$(OBJ):
|
||||||
$(CC) $(CFLAGS) $(INCLUDEPATH) $(DEFINES) -o $@ $<
|
@echo [CC] $@
|
||||||
|
$(eval OUTPATH=$(dir $@))
|
||||||
|
@mkdir -p $(OUTPATH)
|
||||||
|
$(QUIET)$(CC) $(CFLAGS) -MMD -MT $@ $(INCLUDEPATH) $(DEFINES) -o $@ $(@:$(OBJDIR)/%.c.o=%.c)
|
||||||
|
$(ASOBJ):
|
||||||
|
@echo [AS] $@
|
||||||
|
$(eval OUTPATH=$(dir $@))
|
||||||
|
@mkdir -p $(OUTPATH)
|
||||||
|
$(QUIET)$(CC) $(CFLAGS) -MMD -MT $@ $(INCLUDEPATH) $(DEFINES) -o $@ $(@:$(OBJDIR)/%.S.o=%.S)
|
||||||
|
|
||||||
|
|
||||||
.PHONY: qtproject clean mrproper objcopy
|
.PHONY: qtproject clean mrproper objcopy disassemble
|
||||||
|
|
||||||
|
disassemble: $(target).elf
|
||||||
|
$(QUIET)$(OBJDUMP) -D -s $< > $(target).lss
|
||||||
|
|
||||||
objcopy: $(target).bin $(target).hex
|
objcopy: $(target).bin $(target).hex
|
||||||
|
|
||||||
mrproper:
|
mrproper: clean
|
||||||
rm -f $(target).pro
|
rm -f $(target).pro
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(target).elf $(target).bin $(target).hex $(OBJ) $(mapfile).map
|
rm -f $(target).elf $(target).bin $(target).hex $(OBJ) $(ASOBJ) $(mapfile).map
|
||||||
qtproject:
|
qtproject:
|
||||||
echo -e "TEMPLATE = app\nCONFIG -= console app_bundle qt" > $(target).pro
|
echo -e "TEMPLATE = app\nCONFIG -= console app_bundle qt" > $(target).pro
|
||||||
echo -e "SOURCES += $(CFILES) $(ASFILES)" >> $(target).pro
|
echo -e "SOURCES += $(CFILES) $(ASFILES)" >> $(target).pro
|
||||||
@ -76,4 +92,4 @@ qtproject:
|
|||||||
echo -ne "\nDEFINES += " >> $(target).pro
|
echo -ne "\nDEFINES += " >> $(target).pro
|
||||||
echo "$(DEFINES)" | sed "s/-D//g" >> $(target).pro
|
echo "$(DEFINES)" | sed "s/-D//g" >> $(target).pro
|
||||||
|
|
||||||
|
-include $(CFILES:%.c=$(OBJDIR)/%.c.d) $(ASFILES:%.S=$(OBJDIR)/%.S.d)
|
116
stm-firmware/main.c
Normal file
116
stm-firmware/main.c
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
/*
|
||||||
|
* main.c
|
||||||
|
*
|
||||||
|
* Created on: Apr 25, 2015
|
||||||
|
* Author: mari
|
||||||
|
*/
|
||||||
|
#include <stm32f4xx.h>
|
||||||
|
//#include <arm_math.h>
|
||||||
|
#include <system_stm32f4xx.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
|
||||||
|
#define OUTPUT(pin) (0b01 << (pin * 2))
|
||||||
|
#define ANALOG(pin) (0x03 << (pin * 2))
|
||||||
|
|
||||||
|
struct adc_conversions {
|
||||||
|
uint16_t pa2_raw;
|
||||||
|
uint16_t ref_raw;
|
||||||
|
uint16_t temp_raw;
|
||||||
|
uint16_t vbat_raw;
|
||||||
|
};
|
||||||
|
|
||||||
|
static volatile struct adc_conversions adc_results;
|
||||||
|
|
||||||
|
volatile uint64_t sample_count = 0;
|
||||||
|
volatile uint8_t new_data = 0;
|
||||||
|
|
||||||
|
|
||||||
|
void DMA2_Stream0_IRQHandler()
|
||||||
|
{
|
||||||
|
uint32_t lisr;
|
||||||
|
|
||||||
|
lisr = DMA2->LISR;
|
||||||
|
DMA2->LIFCR = lisr;
|
||||||
|
|
||||||
|
if (lisr & DMA_LISR_TCIF0) {
|
||||||
|
new_data = 1;
|
||||||
|
sample_count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup_dma(void *dest, size_t size)
|
||||||
|
{
|
||||||
|
RCC->AHB1ENR |= RCC_AHB1ENR_DMA2EN;
|
||||||
|
|
||||||
|
DMA2_Stream0->M0AR = (uint32_t)dest;
|
||||||
|
DMA2_Stream0->PAR = (uint32_t)&ADC1->DR;
|
||||||
|
DMA2_Stream0->CR = DMA_SxCR_PL_1 | DMA_SxCR_MSIZE_0 | DMA_SxCR_PSIZE_0 | DMA_SxCR_MINC |
|
||||||
|
DMA_SxCR_CIRC | DMA_SxCR_TCIE;
|
||||||
|
DMA2_Stream0->NDTR = size;
|
||||||
|
NVIC_EnableIRQ(DMA2_Stream0_IRQn);
|
||||||
|
|
||||||
|
DMA2_Stream0->CR |= DMA_SxCR_EN;
|
||||||
|
new_data = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
float ext_lf_corr;
|
||||||
|
|
||||||
|
float temp_lf_corr;
|
||||||
|
|
||||||
|
float ref_lf;
|
||||||
|
float vdd_calculated = 3.3f;
|
||||||
|
|
||||||
|
float vbat_lf_corr;
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
|
||||||
|
struct adc_conversions working;
|
||||||
|
|
||||||
|
|
||||||
|
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
|
||||||
|
RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;
|
||||||
|
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN;
|
||||||
|
__DSB();
|
||||||
|
GPIOB->MODER = OUTPUT(2) | OUTPUT(3);
|
||||||
|
GPIOA->MODER |= ANALOG(2);
|
||||||
|
GPIOB->ODR |= (1<<2);
|
||||||
|
SysTick_Config(8*1680000);
|
||||||
|
|
||||||
|
ADC1->SMPR2 = (7U<<(3*2));
|
||||||
|
ADC1->SMPR1 = (7U<<18) | (7U<<21) | (7U<<24);
|
||||||
|
ADC1->SQR1 = (2<<20);
|
||||||
|
ADC1->SQR3 = (2<<0) | (16<<(5*2)) | (17<<(5*1));
|
||||||
|
|
||||||
|
ADC->CCR |= (0x2<<16) | ADC_CCR_TSVREFE;
|
||||||
|
ADC1->CR1 = ADC_CR1_SCAN;
|
||||||
|
ADC1->CR2 = ADC_CR2_ADON | ADC_CR2_CONT | ADC_CR2_DMA | ADC_CR2_DDS;
|
||||||
|
|
||||||
|
//while(1);
|
||||||
|
|
||||||
|
setup_dma(&adc_results, 3);
|
||||||
|
|
||||||
|
ADC1->CR2 |= ADC_CR2_SWSTART;
|
||||||
|
|
||||||
|
while(1) {
|
||||||
|
if (!new_data)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
new_data = 0;
|
||||||
|
memcpy(&working, &adc_results, sizeof(adc_results));
|
||||||
|
|
||||||
|
ref_lf = 0.995f * ref_lf + 0.005f * (float)working.ref_raw;
|
||||||
|
vdd_calculated = ((1.21f * 4096)/ ref_lf);
|
||||||
|
|
||||||
|
temp_lf_corr = 0.99f * temp_lf_corr + 0.01 * (float)working.temp_raw * vdd_calculated / 2.495f;
|
||||||
|
ext_lf_corr = 0.995f * ext_lf_corr + 0.005f * (float)working.pa2_raw / 4096 * 2500.0f; // * vdd_calculated / 2.495f;
|
||||||
|
|
||||||
|
//vbat_lf_corr = 0.99 * vbat_lf_corr + 0.01 * (float)working.vbat_raw / 4096 * vdd_calculated * 2.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void SysTick_Handler()
|
||||||
|
{
|
||||||
|
GPIOB->ODR ^= (1<<2) | (1<<3);
|
||||||
|
}
|
287
stm-firmware/reflow-oven-controller.jdebug
Normal file
287
stm-firmware/reflow-oven-controller.jdebug
Normal file
@ -0,0 +1,287 @@
|
|||||||
|
/*********************************************************************
|
||||||
|
* (c) SEGGER Microcontroller GmbH *
|
||||||
|
* The Embedded Experts *
|
||||||
|
* www.segger.com *
|
||||||
|
**********************************************************************
|
||||||
|
|
||||||
|
File :
|
||||||
|
Created : 26 Jan 2020 15:46
|
||||||
|
Ozone Version : V2.70
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* OnProjectLoad
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Project load routine. Required.
|
||||||
|
*
|
||||||
|
**********************************************************************
|
||||||
|
*/
|
||||||
|
void OnProjectLoad (void) {
|
||||||
|
//
|
||||||
|
// Dialog-generated settings
|
||||||
|
//
|
||||||
|
Project.AddPathSubstitute ("/home/mari/projects/arm/reflow-oven-controller", "$(ProjectDir)");
|
||||||
|
Project.AddPathSubstitute ("/home/mari/projects/arm/reflow-oven-controller", "$(ProjectDir)");
|
||||||
|
Project.SetDevice ("STM32F407VE");
|
||||||
|
Project.SetHostIF ("USB", "");
|
||||||
|
Project.SetTargetIF ("SWD");
|
||||||
|
Project.SetTIFSpeed ("4 MHz");
|
||||||
|
Project.AddSvdFile ("$(InstallDir)/Config/CPU/Cortex-M4F.svd");
|
||||||
|
Project.AddSvdFile ("/home/mari/Downloads/STM32F407.svd");
|
||||||
|
//
|
||||||
|
// User settings
|
||||||
|
//
|
||||||
|
File.Open ("$(ProjectDir)/reflow-controller.elf");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* OnSnapshotLoad
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Optional event handler, called upon loading a snapshot.
|
||||||
|
*
|
||||||
|
* Additional information
|
||||||
|
* This function is used to restore the target state in cases
|
||||||
|
* where values cannot simply be written to the target.
|
||||||
|
* Typical use: GPIO clock needs to be enabled, before
|
||||||
|
* GPIO is configured.
|
||||||
|
*
|
||||||
|
**********************************************************************
|
||||||
|
*/
|
||||||
|
//void OnSnapshotLoad (void) {
|
||||||
|
//}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* OnSnapshotSave
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Optional event handler, called upon saving a snapshot.
|
||||||
|
*
|
||||||
|
* Additional information
|
||||||
|
* This function is usually used to save values of the target
|
||||||
|
* state which can either not be trivially read,
|
||||||
|
* or need to be restored in a specific way or order.
|
||||||
|
* Typically use: Memory Mapped Registers,
|
||||||
|
* such as PLL and GPIO configuration.
|
||||||
|
*
|
||||||
|
**********************************************************************
|
||||||
|
*/
|
||||||
|
//void OnSnapshotSave (void) {
|
||||||
|
//}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* TargetReset
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Replaces the default target device reset routine. Optional.
|
||||||
|
*
|
||||||
|
* Notes
|
||||||
|
* This example demonstrates the usage when
|
||||||
|
* debugging a RAM program on a Cortex-M target device
|
||||||
|
*
|
||||||
|
**********************************************************************
|
||||||
|
*/
|
||||||
|
//void TargetReset (void) {
|
||||||
|
//
|
||||||
|
// unsigned int SP;
|
||||||
|
// unsigned int PC;
|
||||||
|
// unsigned int VectorTableAddr;
|
||||||
|
//
|
||||||
|
// Exec.Reset();
|
||||||
|
//
|
||||||
|
// VectorTableAddr = Elf.GetBaseAddr();
|
||||||
|
//
|
||||||
|
// if (VectorTableAddr != 0xFFFFFFFF) {
|
||||||
|
//
|
||||||
|
// Util.Log("Resetting Program.");
|
||||||
|
//
|
||||||
|
// SP = Target.ReadU32(VectorTableAddr);
|
||||||
|
// Target.SetReg("SP", SP);
|
||||||
|
//
|
||||||
|
// PC = Target.ReadU32(VectorTableAddr + 4);
|
||||||
|
// Target.SetReg("PC", PC);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* BeforeTargetReset
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Event handler routine. Optional.
|
||||||
|
*
|
||||||
|
**********************************************************************
|
||||||
|
*/
|
||||||
|
//void BeforeTargetReset (void) {
|
||||||
|
//}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* AfterTargetReset
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Event handler routine.
|
||||||
|
* - Sets the PC register to program reset value.
|
||||||
|
* - Sets the SP register to program reset value on Cortex-M.
|
||||||
|
*
|
||||||
|
**********************************************************************
|
||||||
|
*/
|
||||||
|
void AfterTargetReset (void) {
|
||||||
|
unsigned int SP;
|
||||||
|
unsigned int PC;
|
||||||
|
unsigned int VectorTableAddr;
|
||||||
|
|
||||||
|
VectorTableAddr = Elf.GetBaseAddr();
|
||||||
|
|
||||||
|
if (VectorTableAddr == 0xFFFFFFFF) {
|
||||||
|
Util.Log("Project file error: failed to get program base");
|
||||||
|
} else {
|
||||||
|
SP = Target.ReadU32(VectorTableAddr);
|
||||||
|
Target.SetReg("SP", SP);
|
||||||
|
|
||||||
|
PC = Target.ReadU32(VectorTableAddr + 4);
|
||||||
|
Target.SetReg("PC", PC);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* DebugStart
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Replaces the default debug session startup routine. Optional.
|
||||||
|
*
|
||||||
|
**********************************************************************
|
||||||
|
*/
|
||||||
|
//void DebugStart (void) {
|
||||||
|
//}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* TargetConnect
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Replaces the default target IF connection routine. Optional.
|
||||||
|
*
|
||||||
|
**********************************************************************
|
||||||
|
*/
|
||||||
|
//void TargetConnect (void) {
|
||||||
|
//}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* BeforeTargetConnect
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Event handler routine. Optional.
|
||||||
|
*
|
||||||
|
**********************************************************************
|
||||||
|
*/
|
||||||
|
//void BeforeTargetConnect (void) {
|
||||||
|
//}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* AfterTargetConnect
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Event handler routine. Optional.
|
||||||
|
*
|
||||||
|
**********************************************************************
|
||||||
|
*/
|
||||||
|
//void AfterTargetConnect (void) {
|
||||||
|
//}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* TargetDownload
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Replaces the default program download routine. Optional.
|
||||||
|
*
|
||||||
|
**********************************************************************
|
||||||
|
*/
|
||||||
|
//void TargetDownload (void) {
|
||||||
|
//}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* BeforeTargetDownload
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Event handler routine. Optional.
|
||||||
|
*
|
||||||
|
**********************************************************************
|
||||||
|
*/
|
||||||
|
//void BeforeTargetDownload (void) {
|
||||||
|
//}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* AfterTargetDownload
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Event handler routine.
|
||||||
|
* - Sets the PC register to program reset value.
|
||||||
|
* - Sets the SP register to program reset value on Cortex-M.
|
||||||
|
*
|
||||||
|
**********************************************************************
|
||||||
|
*/
|
||||||
|
void AfterTargetDownload (void) {
|
||||||
|
unsigned int SP;
|
||||||
|
unsigned int PC;
|
||||||
|
unsigned int VectorTableAddr;
|
||||||
|
|
||||||
|
VectorTableAddr = Elf.GetBaseAddr();
|
||||||
|
|
||||||
|
if (VectorTableAddr == 0xFFFFFFFF) {
|
||||||
|
Util.Log("Project file error: failed to get program base");
|
||||||
|
} else {
|
||||||
|
SP = Target.ReadU32(VectorTableAddr);
|
||||||
|
Target.SetReg("SP", SP);
|
||||||
|
|
||||||
|
PC = Target.ReadU32(VectorTableAddr + 4);
|
||||||
|
Target.SetReg("PC", PC);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* BeforeTargetDisconnect
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Event handler routine. Optional.
|
||||||
|
*
|
||||||
|
**********************************************************************
|
||||||
|
*/
|
||||||
|
//void BeforeTargetDisconnect (void) {
|
||||||
|
//}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* AfterTargetDisconnect
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Event handler routine. Optional.
|
||||||
|
*
|
||||||
|
**********************************************************************
|
||||||
|
*/
|
||||||
|
//void AfterTargetDisconnect (void) {
|
||||||
|
//}
|
||||||
|
|
||||||
|
/*********************************************************************
|
||||||
|
*
|
||||||
|
* AfterTargetHalt
|
||||||
|
*
|
||||||
|
* Function description
|
||||||
|
* Event handler routine. Optional.
|
||||||
|
*
|
||||||
|
**********************************************************************
|
||||||
|
*/
|
||||||
|
//void AfterTargetHalt (void) {
|
||||||
|
//}
|
33
stm-firmware/reflow-oven-controller.jdebug.user
Normal file
33
stm-firmware/reflow-oven-controller.jdebug.user
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
|
||||||
|
GraphedExpression="ext_lf_corr", DisplayFormat=DISPLAY_FORMAT_DEC
|
||||||
|
GraphedExpression="adc_results.pa2_raw", DisplayFormat=DISPLAY_FORMAT_DEC
|
||||||
|
GraphedExpression="sample_count", DisplayFormat=DISPLAY_FORMAT_DEC
|
||||||
|
GraphedExpression="vdd_calculated"
|
||||||
|
OpenDocument="system_stm32f4xx.c", FilePath="/home/mari/projects/arm/reflow-oven-controller/cmsis_boot/system_stm32f4xx.c", Line=308
|
||||||
|
OpenDocument="main.c", FilePath="/home/mari/projects/arm/reflow-oven-controller/main.c", Line=55
|
||||||
|
OpenDocument="startup_stm32f4xx.S", FilePath="/home/mari/projects/arm/reflow-oven-controller/boot/startup_stm32f4xx.S", Line=58
|
||||||
|
OpenToolbar="Debug", Floating=0, x=0, y=0
|
||||||
|
OpenWindow="Registers 1", DockArea=RIGHT, x=0, y=1, w=659, h=263, FilterBarShown=0, ToolBarShown=0, FilteredItems=[], RefreshRate=1
|
||||||
|
OpenWindow="Source Files", DockArea=LEFT, x=0, y=2, w=285, h=117, FilterBarShown=1, ToolBarShown=0
|
||||||
|
OpenWindow="Disassembly", DockArea=RIGHT, x=0, y=0, w=659, h=358, FilterBarShown=0, ToolBarShown=0, ExecCountersShown=0, InstEncodingsShown=0
|
||||||
|
OpenWindow="Source", x=0, y=0, w=0, h=0, FilterBarShown=0, ToolBarShown=0, ExecCountersShown=0
|
||||||
|
OpenWindow="Break & Tracepoints", DockArea=LEFT, x=0, y=0, w=285, h=398, FilterBarShown=0, ToolBarShown=0, VectorCatchIndexMask=0
|
||||||
|
OpenWindow="Memory 1", DockArea=BOTTOM, x=0, y=0, w=578, h=299, FilterBarShown=0, ToolBarShown=0, EditorAddress=0x2001FC2A
|
||||||
|
OpenWindow="Watched Data", DockArea=RIGHT, x=0, y=0, w=659, h=358, FilterBarShown=0, ToolBarShown=0
|
||||||
|
OpenWindow="Functions", DockArea=LEFT, x=0, y=1, w=285, h=117, FilterBarShown=1, ToolBarShown=0
|
||||||
|
OpenWindow="Terminal", DockArea=BOTTOM, x=1, y=0, w=241, h=299, FilterBarShown=0, ToolBarShown=0
|
||||||
|
OpenWindow="Data Graph", DockArea=BOTTOM, x=2, y=0, w=850, h=299, FilterBarShown=0, ToolBarShown=0, VisibleTab=0, SamplingFreq=1 kHz, ClearEvent=RESUME, LegendShown=0, UniformSampleSpacing=0, PinCursor=-1, TimePerDiv=10000000
|
||||||
|
OpenWindow="Console", DockArea=BOTTOM, x=3, y=0, w=233, h=299, FilterBarShown=0, ToolBarShown=0
|
||||||
|
TableHeader="Watched Data", SortCol="Expression", SortOrder="DESCENDING", VisibleCols=["Expression";"Value";"Location";"Size";"Refresh";"Type"], ColWidths=[156;270;84;47;66;231]
|
||||||
|
TableHeader="Vector Catches", SortCol="None", SortOrder="ASCENDING", VisibleCols=["";"Vector Catch";"Description"], ColWidths=[50;300;500]
|
||||||
|
TableHeader="Break & Tracepoints", SortCol="None", SortOrder="DESCENDING", VisibleCols=["";"Type";"Location";"Extras"], ColWidths=[55;56;86;88]
|
||||||
|
TableHeader="Functions", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Address";"Size";"#Insts";"Source"], ColWidths=[170;84;73;63;189]
|
||||||
|
TableHeader="Source Files", SortCol="File", SortOrder="ASCENDING", VisibleCols=["File";"Status";"Size";"#Insts";"Path"], ColWidths=[186;70;63;73;546]
|
||||||
|
TableHeader="Data Graph", SortCol="None", SortOrder="ASCENDING", VisibleCols=["Index";"Time ";" ext_lf_corr";" adc_results.pa2_raw";" sample_count";" vdd_calculated"], ColWidths=[147;147;85;85;85;285]
|
||||||
|
TableHeader="Data Graph", SortCol="Expression", SortOrder="ASCENDING", VisibleCols=["Expression";"Type";"Value";"Min";"Max";"Average";"# Changes";"Min. Change";"Max. Change"], ColWidths=[147;147;77;63;77;84;83;98;96]
|
||||||
|
TableHeader="Power Graph", SortCol="Index", SortOrder="ASCENDING", VisibleCols=["Index";"Time";"Channel 0"], ColWidths=[84;119;126]
|
||||||
|
TableHeader="Registers 1", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Value";"Description"], ColWidths=[239;181;259]
|
||||||
|
TableHeader="RegisterSelectionDialog", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Auto";"Name";"Address";"Description"], ColWidths=[27;27;27;27]
|
||||||
|
WatchedExpression="ext_lf_corr"
|
||||||
|
WatchedExpression="adc_results"
|
||||||
|
WatchedExpression="vdd_calculated"
|
Loading…
Reference in New Issue
Block a user