#define LED_Pin LL_GPIO_PIN_13
#define LED_GPIO_Port GPIOC
+#define THERMO_Pin LL_GPIO_PIN_7
+#define THERMO_GPIO_Port GPIOA
#define SSR3_Pin LL_GPIO_PIN_10
#define SSR3_GPIO_Port GPIOB
#define SSR4_Pin LL_GPIO_PIN_11
/*#define HAL_CORTEX_MODULE_ENABLED */
/*#define HAL_CRC_MODULE_ENABLED */
/*#define HAL_DAC_MODULE_ENABLED */
-/*#define HAL_DMA_MODULE_ENABLED */
+#define HAL_DMA_MODULE_ENABLED
/*#define HAL_ETH_MODULE_ENABLED */
/*#define HAL_FLASH_MODULE_ENABLED */
/*#define HAL_GPIO_MODULE_ENABLED */
void DebugMon_Handler(void);
void PendSV_Handler(void);
void SysTick_Handler(void);
+void DMA1_Channel6_IRQHandler(void);
void USB_HP_CAN1_TX_IRQHandler(void);
void USB_LP_CAN1_RX0_IRQHandler(void);
+void TIM3_IRQHandler(void);
void TIM4_IRQHandler(void);
#ifdef __cplusplus
##########################################################################################################################
-# File automatically-generated by tool: [projectgenerator] version: [2.27.0] date: [Tue Aug 07 22:22:37 CEST 2018]
+# File automatically-generated by tool: [projectgenerator] version: [2.27.0] date: [Wed Aug 08 00:58:51 CEST 2018]
##########################################################################################################################
# ------------------------------------------------
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
+static void MX_DMA_Init(void);
static void MX_USB_PCD_Init(void);
static void MX_TIM4_Init(void);
static void MX_USART1_UART_Init(void);
+static void MX_TIM3_Init(void);
/* USER CODE BEGIN PFP */
/* Private function prototypes -----------------------------------------------*/
/* Initialize all configured peripherals */
MX_GPIO_Init();
+ MX_DMA_Init();
// A hack to let USB host reset us
LL_GPIO_InitTypeDef gpio;
MX_USB_PCD_Init();
MX_TIM4_Init();
MX_USART1_UART_Init();
+ MX_TIM3_Init();
/* USER CODE BEGIN 2 */
usb_start(&usb);
NVIC_SetPriority(SysTick_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0));
}
+/* TIM3 init function */
+static void MX_TIM3_Init(void)
+{
+
+ LL_TIM_InitTypeDef TIM_InitStruct;
+ LL_TIM_OC_InitTypeDef TIM_OC_InitStruct;
+
+ LL_GPIO_InitTypeDef GPIO_InitStruct;
+
+ /* Peripheral clock enable */
+ LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM3);
+
+ /* TIM3 DMA Init */
+
+ /* TIM3_CH1_TRIG Init */
+ LL_DMA_SetDataTransferDirection(DMA1, LL_DMA_CHANNEL_6, LL_DMA_DIRECTION_PERIPH_TO_MEMORY);
+
+ LL_DMA_SetChannelPriorityLevel(DMA1, LL_DMA_CHANNEL_6, LL_DMA_PRIORITY_VERYHIGH);
+
+ LL_DMA_SetMode(DMA1, LL_DMA_CHANNEL_6, LL_DMA_MODE_NORMAL);
+
+ LL_DMA_SetPeriphIncMode(DMA1, LL_DMA_CHANNEL_6, LL_DMA_PERIPH_NOINCREMENT);
+
+ LL_DMA_SetMemoryIncMode(DMA1, LL_DMA_CHANNEL_6, LL_DMA_MEMORY_INCREMENT);
+
+ LL_DMA_SetPeriphSize(DMA1, LL_DMA_CHANNEL_6, LL_DMA_PDATAALIGN_HALFWORD);
+
+ LL_DMA_SetMemorySize(DMA1, LL_DMA_CHANNEL_6, LL_DMA_MDATAALIGN_HALFWORD);
+
+ /* TIM3 interrupt Init */
+ NVIC_SetPriority(TIM3_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0));
+ NVIC_EnableIRQ(TIM3_IRQn);
+
+ TIM_InitStruct.Prescaler = 71;
+ TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP;
+ TIM_InitStruct.Autoreload = 0;
+ TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1;
+ LL_TIM_Init(TIM3, &TIM_InitStruct);
+
+ LL_TIM_DisableARRPreload(TIM3);
+
+ LL_TIM_SetClockSource(TIM3, LL_TIM_CLOCKSOURCE_INTERNAL);
+
+ TIM_OC_InitStruct.OCMode = LL_TIM_OCMODE_FROZEN;
+ TIM_OC_InitStruct.OCState = LL_TIM_OCSTATE_DISABLE;
+ TIM_OC_InitStruct.OCNState = LL_TIM_OCSTATE_DISABLE;
+ TIM_OC_InitStruct.CompareValue = 0;
+ TIM_OC_InitStruct.OCPolarity = LL_TIM_OCPOLARITY_HIGH;
+ LL_TIM_OC_Init(TIM3, LL_TIM_CHANNEL_CH1, &TIM_OC_InitStruct);
+
+ LL_TIM_OC_DisableFast(TIM3, LL_TIM_CHANNEL_CH1);
+
+ TIM_OC_InitStruct.OCMode = LL_TIM_OCMODE_ACTIVE;
+ TIM_OC_InitStruct.OCState = LL_TIM_OCSTATE_DISABLE;
+ TIM_OC_InitStruct.OCNState = LL_TIM_OCSTATE_DISABLE;
+ LL_TIM_OC_Init(TIM3, LL_TIM_CHANNEL_CH2, &TIM_OC_InitStruct);
+
+ LL_TIM_OC_DisableFast(TIM3, LL_TIM_CHANNEL_CH2);
+
+ LL_TIM_SetTriggerOutput(TIM3, LL_TIM_TRGO_RESET);
+
+ LL_TIM_DisableMasterSlaveMode(TIM3);
+
+ /**TIM3 GPIO Configuration
+ PA7 ------> TIM3_CH2
+ */
+ GPIO_InitStruct.Pin = THERMO_Pin;
+ GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
+ GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
+ GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
+ LL_GPIO_Init(THERMO_GPIO_Port, &GPIO_InitStruct);
+
+}
+
/* TIM4 init function */
static void MX_TIM4_Init(void)
{
}
+/**
+ * Enable DMA controller clock
+ */
+static void MX_DMA_Init(void)
+{
+ /* DMA controller clock enable */
+ __HAL_RCC_DMA1_CLK_ENABLE();
+
+ /* DMA interrupt init */
+ /* DMA1_Channel6_IRQn interrupt configuration */
+ NVIC_SetPriority(DMA1_Channel6_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0));
+ NVIC_EnableIRQ(DMA1_Channel6_IRQn);
+
+}
+
/** Configure pins as
* Analog
* Input
/* GPIO Ports Clock Enable */
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOC);
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOD);
- LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOB);
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOA);
+ LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOB);
/* LED output is OC, active low, defaults to high */
LL_GPIO_SetOutputPin(LED_GPIO_Port, LED_Pin);
/* please refer to the startup file (startup_stm32f1xx.s). */
/******************************************************************************/
+/**
+* @brief This function handles DMA1 channel6 global interrupt.
+*/
+void DMA1_Channel6_IRQHandler(void)
+{
+ /* USER CODE BEGIN DMA1_Channel6_IRQn 0 */
+
+ /* USER CODE END DMA1_Channel6_IRQn 0 */
+
+ /* USER CODE BEGIN DMA1_Channel6_IRQn 1 */
+
+ /* USER CODE END DMA1_Channel6_IRQn 1 */
+}
+
/**
* @brief This function handles USB high priority or CAN TX interrupts.
*/
/* USER CODE END USB_LP_CAN1_RX0_IRQn 1 */
}
+/**
+* @brief This function handles TIM3 global interrupt.
+*/
+void TIM3_IRQHandler(void)
+{
+ /* USER CODE BEGIN TIM3_IRQn 0 */
+
+ /* USER CODE END TIM3_IRQn 0 */
+ /* USER CODE BEGIN TIM3_IRQn 1 */
+
+ /* USER CODE END TIM3_IRQn 1 */
+}
+
/**
* @brief This function handles TIM4 global interrupt.
*/
#MicroXplorer Configuration settings - do not modify
+Dma.Request0=TIM3_CH1/TRIG
+Dma.RequestsNb=1
+Dma.TIM3_CH1/TRIG.0.Direction=DMA_PERIPH_TO_MEMORY
+Dma.TIM3_CH1/TRIG.0.Instance=DMA1_Channel6
+Dma.TIM3_CH1/TRIG.0.MemDataAlignment=DMA_MDATAALIGN_HALFWORD
+Dma.TIM3_CH1/TRIG.0.MemInc=DMA_MINC_ENABLE
+Dma.TIM3_CH1/TRIG.0.Mode=DMA_NORMAL
+Dma.TIM3_CH1/TRIG.0.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD
+Dma.TIM3_CH1/TRIG.0.PeriphInc=DMA_PINC_DISABLE
+Dma.TIM3_CH1/TRIG.0.Priority=DMA_PRIORITY_VERY_HIGH
+Dma.TIM3_CH1/TRIG.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
File.Version=6
KeepUserPlacement=false
Mcu.Family=STM32F1
-Mcu.IP0=NVIC
-Mcu.IP1=RCC
-Mcu.IP2=SYS
-Mcu.IP3=TIM4
-Mcu.IP4=USART1
-Mcu.IP5=USB
-Mcu.IPNb=6
+Mcu.IP0=DMA
+Mcu.IP1=NVIC
+Mcu.IP2=RCC
+Mcu.IP3=SYS
+Mcu.IP4=TIM3
+Mcu.IP5=TIM4
+Mcu.IP6=USART1
+Mcu.IP7=USB
+Mcu.IPNb=8
Mcu.Name=STM32F103C(8-B)Tx
Mcu.Package=LQFP48
Mcu.Pin0=PC13-TAMPER-RTC
Mcu.Pin1=PC14-OSC32_IN
-Mcu.Pin10=PA12
-Mcu.Pin11=PA13
-Mcu.Pin12=PA14
-Mcu.Pin13=PB8
-Mcu.Pin14=PB9
-Mcu.Pin15=VP_SYS_VS_Systick
-Mcu.Pin16=VP_TIM4_VS_ClockSourceINT
-Mcu.Pin17=VP_TIM4_VS_no_output1
+Mcu.Pin10=PA11
+Mcu.Pin11=PA12
+Mcu.Pin12=PA13
+Mcu.Pin13=PA14
+Mcu.Pin14=PB8
+Mcu.Pin15=PB9
+Mcu.Pin16=VP_SYS_VS_Systick
+Mcu.Pin17=VP_TIM3_VS_ClockSourceINT
+Mcu.Pin18=VP_TIM3_VS_no_output1
+Mcu.Pin19=VP_TIM4_VS_ClockSourceINT
Mcu.Pin2=PC15-OSC32_OUT
+Mcu.Pin20=VP_TIM4_VS_no_output1
Mcu.Pin3=PD0-OSC_IN
Mcu.Pin4=PD1-OSC_OUT
-Mcu.Pin5=PB10
-Mcu.Pin6=PB11
-Mcu.Pin7=PA9
-Mcu.Pin8=PA10
-Mcu.Pin9=PA11
-Mcu.PinsNb=18
+Mcu.Pin5=PA7
+Mcu.Pin6=PB10
+Mcu.Pin7=PB11
+Mcu.Pin8=PA9
+Mcu.Pin9=PA10
+Mcu.PinsNb=21
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F103C8Tx
MxCube.Version=4.25.1
MxDb.Version=DB.4.0.251
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false
+NVIC.DMA1_Channel6_IRQn=true\:0\:0\:false\:false\:true\:false
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false
NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false
NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false
+NVIC.TIM3_IRQn=true\:0\:0\:false\:false\:true\:true
NVIC.TIM4_IRQn=true\:0\:0\:false\:false\:true\:true
NVIC.USB_HP_CAN1_TX_IRQn=true\:15\:0\:true\:false\:true\:true
NVIC.USB_LP_CAN1_RX0_IRQn=true\:15\:0\:true\:false\:true\:true
PA13.Signal=SYS_JTMS-SWDIO
PA14.Mode=Serial_Wire
PA14.Signal=SYS_JTCK-SWCLK
+PA7.GPIOParameters=GPIO_Speed,GPIO_Label
+PA7.GPIO_Label=THERMO
+PA7.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
+PA7.Locked=true
+PA7.Signal=S_TIM3_CH2
PA9.Mode=Asynchronous
PA9.Signal=USART1_TX
PB10.GPIOParameters=GPIO_Label,GPIO_ModeDefaultOutputPP
ProjectManager.TargetToolchain=Makefile
ProjectManager.ToolChainLocation=
ProjectManager.UnderRoot=false
-ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-LL-true,2-SystemClock_Config-RCC-false-LL-false,3-MX_USB_PCD_Init-USB-false-HAL-true,4-MX_TIM4_Init-TIM4-false-LL-true,5-MX_USART1_UART_Init-USART1-false-LL-true
+ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-LL-true,2-MX_DMA_Init-DMA-false-HAL-true,3-SystemClock_Config-RCC-false-LL-false,4-MX_USB_PCD_Init-USB-false-HAL-true,5-MX_TIM4_Init-TIM4-false-LL-true,6-MX_USART1_UART_Init-USART1-false-LL-true,7-MX_TIM3_Init-TIM3-false-LL-true
RCC.ADCFreqValue=36000000
RCC.AHBFreq_Value=72000000
RCC.APB1CLKDivider=RCC_HCLK_DIV2
RCC.USBFreq_Value=48000000
RCC.USBPrescaler=RCC_USBCLKSOURCE_PLL_DIV1_5
RCC.VCOOutput2Freq_Value=8000000
+SH.S_TIM3_CH2.0=TIM3_CH2,Output Compare2 CH2
+SH.S_TIM3_CH2.ConfNb=1
+TIM3.Channel-Output\ Compare1\ No\ Output=TIM_CHANNEL_1
+TIM3.Channel-Output\ Compare2\ CH2=TIM_CHANNEL_2
+TIM3.IPParameters=Channel-Output Compare1 No Output,Channel-Output Compare2 CH2,Prescaler,OCMode_2
+TIM3.OCMode_2=TIM_OCMODE_ACTIVE
+TIM3.Prescaler=71
TIM4.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_DISABLE
TIM4.Channel-Output\ Compare1\ No\ Output=TIM_CHANNEL_1
TIM4.CounterMode=TIM_COUNTERMODE_UP
USB.ep0_mps=DEP0CTL_MPS_64
VP_SYS_VS_Systick.Mode=SysTick
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
+VP_TIM3_VS_ClockSourceINT.Mode=Internal
+VP_TIM3_VS_ClockSourceINT.Signal=TIM3_VS_ClockSourceINT
+VP_TIM3_VS_no_output1.Mode=Output Compare1 No Output
+VP_TIM3_VS_no_output1.Signal=TIM3_VS_no_output1
VP_TIM4_VS_ClockSourceINT.Mode=Internal
VP_TIM4_VS_ClockSourceINT.Signal=TIM4_VS_ClockSourceINT
VP_TIM4_VS_no_output1.Mode=Output Compare1 No Output