@@ -109,33 +109,39 @@ void init_gpio(void) {
GPIO_InitTypeDef GPIO_InitStruct2;
// MISO
GPIO_InitStruct2.GPIO_Pin = GPIO_Pin_14;
GPIO_InitStruct2.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStruct2.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStruct2.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOB, &GPIO_InitStruct2);
//Configure GPIO pin alternate function
GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_SPI2);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_SPI2);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_SPI2);
/** USB GPIO Configuration
PA11 ------> USB_DM
PA12 ------> USB_DP
*/
/*Enable or disable the AHB peripheral clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
GPIO_InitTypeDef GPIO_InitStruct3;
/*Configure GPIO pin : PA */
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_400KHz;
GPIO_Init(GPIOA, &GPIO_InitStruct);
GPIO_InitStruct3.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12;
GPIO_InitStruct3.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStruct3.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStruct3.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStruct3.GPIO_OType = GPIO_OType_PP;
GPIO_Init(GPIOA, &GPIO_InitStruct3);
GPIO_SetBits(GPIOA, GPIO_Pin_12); // emz test
GPIO_PinAFConfig(GPIOA, GPIO_PinSource11, GPIO_AF_USB);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource12, GPIO_AF_USB);
}
// vim:softtabstop=4 shiftwidth=4 expandtab
@@ -75,51 +75,54 @@ int main(void)
// Turn on power LED
GPIO_SetBits(LED_POWER);
// TODO: Awesome pwm of power LED (TIM4_CH4 or TIM11_CH1)
// Configure 1ms SysTick (change if more temporal resolution needed)
RCC_ClocksTypeDef RCC_Clocks;
RCC_GetClocksFreq(&RCC_Clocks);
SysTick_Config(RCC_Clocks.HCLK_Frequency / 1000);
// Init SPI busses
init_spi();
// Init OLED over SPI
ssd1306_Init();
ssd1306_clearscreen();
// Check for problems on startup
if(clock_fail) {
ssd1306_DrawString("ERROR: Check Xtal", 3, 0);
delay(2000);
// Init USB
// Set_USBClock();
// USB_Interrupts_Config();
// USB_Init();
//Set_System(); // hw_config.h
Set_USBClock();
USB_Interrupts_Config();
USB_Init();
//SYSCFG_USBPuCmd(ENABLE);
//PowerOn();
// Startup screen
ssd1306_DrawString("therm v0.1", 1, 40);
ssd1306_DrawString("protofusion.org/therm", 3, 0);
delay(1500);
restore_settings();
if(boottobrew)
state = STATE_PREHEAT_BREW; // Go to brew instead of idle if configured thusly
GPIO_ResetBits(LED_STAT);
// Main loop
while(1)
{
// Process sensor inputs
process();
// Run state machine
machine();
Status change: