]> mj.ucw.cz Git - home-hw.git/commitdiff
SSR: TIM3 and DMA6 prepared for DS18B20
authorMartin Mares <mj@ucw.cz>
Tue, 7 Aug 2018 23:01:02 +0000 (01:01 +0200)
committerMartin Mares <mj@ucw.cz>
Tue, 7 Aug 2018 23:01:02 +0000 (01:01 +0200)
ssr/Inc/main.h
ssr/Inc/stm32f1xx_hal_conf.h
ssr/Inc/stm32f1xx_it.h
ssr/Makefile
ssr/Src/main.c
ssr/Src/stm32f1xx_it.c
ssr/ssr.ioc

index 488241bd917a700a00dc9275f91d9b711d34e1b9..000d9852ccef131adbce47dd523ffab8cc24bbe1 100644 (file)
@@ -63,6 +63,8 @@
 
 #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
index 9180b49f46af7b0eda7390dccebabea5b2dd8040..7ef7bed686084add288afbf68d1ed2394ec57beb 100644 (file)
@@ -57,7 +57,7 @@
 /*#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   */
index 89151eb416c22898bfab422484776bb35728953c..ce7cc735c8650a31df419537a6c9ca3330a9428f 100644 (file)
@@ -56,8 +56,10 @@ void SVC_Handler(void);
 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
index 0b631edddde1ecd0aaa045c3d54fe269354ac2a7..c5f919a9377bfc0985849f089c6d5c38cc9a4ce2 100644 (file)
@@ -1,5 +1,5 @@
 ##########################################################################################################################
-# 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] 
 ##########################################################################################################################
 
 # ------------------------------------------------
index da07b57dce35e694fb97dc40c7df7de1f1ccca6e..9d6a7530d32ea7568c72bd8aca8d89c75d9f5988 100644 (file)
@@ -63,9 +63,11 @@ struct usb usb;
 /* 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 -----------------------------------------------*/
@@ -144,6 +146,7 @@ int main(void)
 
   /* Initialize all configured peripherals */
   MX_GPIO_Init();
+  MX_DMA_Init();
 
   // A hack to let USB host reset us
   LL_GPIO_InitTypeDef gpio;
@@ -159,6 +162,7 @@ int main(void)
   MX_USB_PCD_Init();
   MX_TIM4_Init();
   MX_USART1_UART_Init();
+  MX_TIM3_Init();
   /* USER CODE BEGIN 2 */
   usb_start(&usb);
 
@@ -264,6 +268,80 @@ void SystemClock_Config(void)
   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)
 {
@@ -360,6 +438,21 @@ static void MX_USB_PCD_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 
@@ -375,8 +468,8 @@ static void MX_GPIO_Init(void)
   /* 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);
index 745832c0416ba58b9aecb59cff217651e9a6a3d1..2b98e27dbb2dcaa555cfea907f595594cec7ffe0 100644 (file)
@@ -194,6 +194,20 @@ void SysTick_Handler(void)
 /* 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.
 */
@@ -222,6 +236,19 @@ void USB_LP_CAN1_RX0_IRQHandler(void)
   /* 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.
 */
index b463c04ca55c1e6b59042924fc76fc3d35b90e68..2beb1c5395b2482785d226f9a2d76ae76798b179 100644 (file)
@@ -1,41 +1,58 @@
 #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
@@ -44,6 +61,7 @@ NVIC.PendSV_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
@@ -58,6 +76,11 @@ PA13.Mode=Serial_Wire
 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
@@ -129,7 +152,7 @@ ProjectManager.StackSize=0x400
 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
@@ -151,6 +174,13 @@ RCC.TimSysFreq_Value=72000000
 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
@@ -163,6 +193,10 @@ USB.IPParameters=ep0_mps
 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