Changeset - 23ecc15c694d
[Not reviewed]
default
0 4 0
Ethan Zonca - 10 years ago 2016-03-25 22:30:33
ez@ethanzonca.com
Tons of changes, got my first wspr transmission through! Manually powered up at even minute + 1 second
4 files changed with 81 insertions and 94 deletions:
0 comments (0 inline, 0 general)
Makefile
Show inline comments
 
@@ -40,9 +40,9 @@ JTENCODE_INCLUDES = -Ilib/jtencode
 
# USER_CFLAGS: user C flags (enable warnings, enable debug info)
 
USER_CFLAGS = -Wall -g -ffunction-sections -fdata-sections -Os -fno-common --function-sections -fdata-sections -flto
 
# USER_LDFLAGS:  user LD flags
 
USER_LDFLAGS = -fno-exceptions -ffunction-sections -fdata-sections -Wl,--gc-sections -flto
 
USER_LDFLAGS = -flto -fno-exceptions -ffunction-sections -fdata-sections -Wl,--gc-sections 
 
USER_LDFLAGS += --static
 
# -nostartfiles 
 
#USER_LDFLAGS += -nostartfiles 
 

	
 
# TARGET_DEVICE: device to compile for
 
TARGET_DEVICE = STM32F031x6
 
@@ -93,6 +93,7 @@ DEFS = -D$(CORE) $(USER_DEFS) -D$(TARGET
 

	
 
# compile gcc flags
 
CFLAGS = $(DEFS) $(INCLUDES)
 
# EMZ: Maybe remove -msoft-float
 
CFLAGS += -mcpu=$(CPU) -mthumb -msoft-float
 
CFLAGS += $(USER_CFLAGS)
 

	
 
@@ -216,7 +217,7 @@ LDFLAGS = -T $(LD_SCRIPT) -L $(CUBELIB_B
 
	$(CC) $(CFLAGS) -Os -c -o $@ $^
 

	
 
$(BUILD_DIR)/%.o: src/%.s | $(BUILD_DIR)
 
	$(CC) $(CFLAGS) -c -o $@ $^
 
	$(CC) $(CFLAGS) -Os -c -o $@ $^
 

	
 
$(BUILD_DIR):
 
	$(MKDIR) $@
inc/stm32f0xx_hal_conf.h
Show inline comments
 
@@ -27,7 +27,7 @@
 
//#define HAL_RNG_MODULE_ENABLED   
 
//#define HAL_RTC_MODULE_ENABLED   
 
//#define HAL_SPI_MODULE_ENABLED   
 
//#define HAL_TIM_MODULE_ENABLED   
 
#define HAL_TIM_MODULE_ENABLED   
 
#define HAL_UART_MODULE_ENABLED
 
//#define HAL_USART_MODULE_ENABLED   
 
//#define HAL_IRDA_MODULE_ENABLED   
src/main.c
Show inline comments
 
@@ -10,7 +10,8 @@
 
 
 
void sysclk_init(void);
 
#define WSPR_DEFAULT_FREQ 14097100UL
 
//#define WSPR_DEFAULT_FREQ 14097100UL
 
#define WSPR_DEFAULT_FREQ 10140100UL
 
#define WSPR_TONE_SPACING 146 // ~1.46 Hz
 
#define WSPR_CTC 10672 // CTC value for WSPR
 
 
@@ -42,14 +43,18 @@ void encode_wspr(void)
 
 
        uint32_t freq2 = (freq * 100) + (tx_buffer[i] * tone_spacing);
 
        si5351_set_freq(freq2, 0, SI5351_CLK0);
 
        HAL_GPIO_TogglePin(LED_BLUE);
 
 
          //si5351_set_freq((freq * 100) + (tx_buffer[i] * tone_spacing), 0, SI5351_CLK0);
 
          HAL_Delay(300);
 
          //proceed = 0;
 
          //while(!proceed);
 
          //HAL_Delay(300);
 
          proceed = 0;
 
          while(!proceed);
 
    }
 
        si5351_output_enable(SI5351_CLK0, 0);
 
}
 
 
    TIM_HandleTypeDef htim1;
 
 
int main(void)
 
{
 
    HAL_Init();
 
@@ -62,8 +67,57 @@ int main(void)
 
 
    HAL_GPIO_WritePin(OSC_NOTEN, 0);
 
    HAL_GPIO_WritePin(TCXO_EN, 1);
 
 
 
    // Start timer for WSPR
 
    __TIM1_CLK_ENABLE();
 
    TIM_MasterConfigTypeDef sMasterConfig;
 
    TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig;
 
    TIM_OC_InitTypeDef sConfigOC;
 
 
    htim1.Instance = TIM1;
 
    htim1.Init.Prescaler = 512; // gives 64uS ticks from 8MHz ahbclk
 
    htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
 
    htim1.Init.Period = ctc; // Count up to this value (how many 64uS ticks per symbol)
 
    htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
 
    htim1.Init.RepetitionCounter = 0;
 
    HAL_TIM_Base_Init(&htim1);
 
 
    HAL_TIM_Base_Start_IT(&htim1);
 
/*
 
    sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
 
    sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
 
    HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig);
 
 
    sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
 
    sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
 
    sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
 
    sBreakDeadTimeConfig.DeadTime = 0;
 
    sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
 
    sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
 
    sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
 
    HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig);
 
 
    sConfigOC.OCMode = TIM_OCMODE_TIMING;
 
    sConfigOC.Pulse = 0;
 
    sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
 
    sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
 
    sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
 
    sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
 
    sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
 
    HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1);
 
*/
 
 
 
    HAL_NVIC_SetPriority(TIM1_BRK_UP_TRG_COM_IRQn, 0, 0);
 
    HAL_NVIC_EnableIRQ(TIM1_BRK_UP_TRG_COM_IRQn);
 
 
    HAL_Delay(100);
 
 
 
 
 
 
 
//    MX_USART1_UART_Init();
 
 
    jtencode_init();
 
@@ -96,7 +150,7 @@ int main(void)
 
        
 
        if(HAL_GetTick() - led_timer > 100)
 
        {
 
            //HAL_GPIO_TogglePin(LED_BLUE);
 
            HAL_GPIO_TogglePin(LED_BLUE);
 
            led_timer = HAL_GetTick();
 
        }
 
        if(HAL_GetTick() - last_gps > 100)
src/stm32f0xx_it.c
Show inline comments
 
/**
 
  ******************************************************************************
 
  * @file    stm32f0xx_it.c
 
  * @brief   Interrupt Service Routines.
 
  ******************************************************************************
 
  *
 
  * COPYRIGHT(c) 2016 STMicroelectronics
 
  *
 
  * Redistribution and use in source and binary forms, with or without modification,
 
  * are permitted provided that the following conditions are met:
 
  *   1. Redistributions of source code must retain the above copyright notice,
 
  *      this list of conditions and the following disclaimer.
 
  *   2. Redistributions in binary form must reproduce the above copyright notice,
 
  *      this list of conditions and the following disclaimer in the documentation
 
  *      and/or other materials provided with the distribution.
 
  *   3. Neither the name of STMicroelectronics nor the names of its contributors
 
  *      may be used to endorse or promote products derived from this software
 
  *      without specific prior written permission.
 
  *
 
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 
  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
 
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 
  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
  *
 
  ******************************************************************************
 
  */
 
/* Includes ------------------------------------------------------------------*/
 
//
 
// Interrupts: all global ISRs
 
//
 
 
#include "stm32f0xx_hal.h"
 
#include "stm32f0xx.h"
 
#include "stm32f0xx_it.h"
 
 
/* USER CODE BEGIN 0 */
 
#include "gpio.h"
 
 
/* USER CODE END 0 */
 
 
/* External variables --------------------------------------------------------*/
 
extern DMA_HandleTypeDef hdma_usart1_rx;
 
extern DMA_HandleTypeDef hdma_usart1_tx;
 
extern UART_HandleTypeDef huart1;
 
extern TIM_HandleTypeDef htim1;
 
extern volatile uint8_t proceed;
 
 
/******************************************************************************/
 
/*            Cortex-M0 Processor Interruption and Exception Handlers         */ 
 
/******************************************************************************/
 
 
/**
 
* @brief This function handles System tick timer.
 
*/
 
void SysTick_Handler(void)
 
{
 
  /* USER CODE BEGIN SysTick_IRQn 0 */
 
 
  /* USER CODE END SysTick_IRQn 0 */
 
  HAL_IncTick();
 
  HAL_SYSTICK_IRQHandler();
 
  /* USER CODE BEGIN SysTick_IRQn 1 */
 
 
  /* USER CODE END SysTick_IRQn 1 */
 
    HAL_IncTick();
 
    HAL_SYSTICK_IRQHandler();
 
}
 
 
/******************************************************************************/
 
/* STM32F0xx Peripheral Interrupt Handlers                                    */
 
/* Add here the Interrupt Handlers for the used peripherals.                  */
 
/* For the available peripheral interrupt handler names,                      */
 
/* please refer to the startup file (startup_stm32f0xx.s).                    */
 
/******************************************************************************/
 
 
/**
 
* @brief This function handles DMA1 channel 2 and 3 interrupts.
 
*/
 
void DMA1_Channel2_3_IRQHandler(void)
 
{
 
  /* USER CODE BEGIN DMA1_Channel2_3_IRQn 0 */
 
 
  /* USER CODE END DMA1_Channel2_3_IRQn 0 */
 
  HAL_DMA_IRQHandler(&hdma_usart1_tx);
 
  HAL_DMA_IRQHandler(&hdma_usart1_rx);
 
  /* USER CODE BEGIN DMA1_Channel2_3_IRQn 1 */
 
 
  /* USER CODE END DMA1_Channel2_3_IRQn 1 */
 
    HAL_DMA_IRQHandler(&hdma_usart1_tx);
 
    HAL_DMA_IRQHandler(&hdma_usart1_rx);
 
}
 
 
/**
 
* @brief This function handles USART1 global interrupt / USART1 wake-up interrupt through EXTI line 25.
 
*/
 
void USART1_IRQHandler(void)
 
{
 
  /* USER CODE BEGIN USART1_IRQn 0 */
 
 
  /* USER CODE END USART1_IRQn 0 */
 
  HAL_UART_IRQHandler(&huart1);
 
  /* USER CODE BEGIN USART1_IRQn 1 */
 
 
  /* USER CODE END USART1_IRQn 1 */
 
    HAL_UART_IRQHandler(&huart1);
 
}
 
 
/* USER CODE BEGIN 1 */
 
 
/* USER CODE END 1 */
 
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
 
void TIM1_BRK_UP_TRG_COM_IRQHandler(void)
 
{
 
    proceed = 1;
 
    HAL_TIM_IRQHandler(&htim1);
 
}
0 comments (0 inline, 0 general)