From dcfb42c972f904482514ef194003018a02c8c260 Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Wed, 31 May 2017 23:51:56 +0200 Subject: o Lots of work, IC not really working. Almost there. --- bsp/radio-controller-1/Src/main.c | 59 +++++++++++++++++--------- bsp/radio-controller-1/Src/stm32f1xx_hal_msp.c | 30 ++----------- bsp/radio-controller-1/Src/stm32f1xx_it.c | 17 +------- 3 files changed, 44 insertions(+), 62 deletions(-) (limited to 'bsp/radio-controller-1/Src') diff --git a/bsp/radio-controller-1/Src/main.c b/bsp/radio-controller-1/Src/main.c index 4b49e82..d7e4c04 100644 --- a/bsp/radio-controller-1/Src/main.c +++ b/bsp/radio-controller-1/Src/main.c @@ -51,8 +51,9 @@ /* USER CODE END Includes */ /* Private variables ---------------------------------------------------------*/ +IWDG_HandleTypeDef hiwdg; + TIM_HandleTypeDef htim1; -DMA_HandleTypeDef hdma_tim1_ch1; UART_HandleTypeDef huart2; @@ -65,7 +66,7 @@ UART_HandleTypeDef huart2; void SystemClock_Config(void); void Error_Handler(void); static void MX_GPIO_Init(void); -static void MX_DMA_Init(void); +static void MX_IWDG_Init(void); static void MX_TIM1_Init(void); static void MX_USART2_UART_Init(void); @@ -95,10 +96,10 @@ int main(void) /* Initialize all configured peripherals */ MX_GPIO_Init(); - MX_DMA_Init(); + MX_IWDG_Init(); MX_TIM1_Init(); - MX_USB_DEVICE_Init(); MX_USART2_UART_Init(); + MX_USB_DEVICE_Init(); /* USER CODE BEGIN 2 */ main_post_init(); @@ -128,10 +129,11 @@ void SystemClock_Config(void) /**Initializes the CPU, AHB and APB busses clocks */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI|RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; RCC_OscInitStruct.HSIState = RCC_HSI_ON; + RCC_OscInitStruct.LSIState = RCC_LSI_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; @@ -173,24 +175,53 @@ void SystemClock_Config(void) HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); } +/* IWDG init function */ +static void MX_IWDG_Init(void) +{ + + hiwdg.Instance = IWDG; + hiwdg.Init.Prescaler = IWDG_PRESCALER_4; + hiwdg.Init.Reload = 4095; + if (HAL_IWDG_Init(&hiwdg) != HAL_OK) + { + Error_Handler(); + } + +} + /* TIM1 init function */ static void MX_TIM1_Init(void) { + TIM_SlaveConfigTypeDef sSlaveConfig; TIM_MasterConfigTypeDef sMasterConfig; TIM_IC_InitTypeDef sConfigIC; htim1.Instance = TIM1; - htim1.Init.Prescaler = RX_TIMER_PRESCALER; + htim1.Init.Prescaler = RADIO_RX_TIMER_PRESCALER; htim1.Init.CounterMode = TIM_COUNTERMODE_UP; htim1.Init.Period = 0xffff; htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim1.Init.RepetitionCounter = 0; + if (HAL_TIM_Base_Init(&htim1) != HAL_OK) + { + Error_Handler(); + } + if (HAL_TIM_IC_Init(&htim1) != HAL_OK) { Error_Handler(); } + sSlaveConfig.SlaveMode = TIM_SLAVEMODE_RESET; + sSlaveConfig.InputTrigger = TIM_TS_TI1FP1; + sSlaveConfig.TriggerPolarity = TIM_INPUTCHANNELPOLARITY_RISING; + sSlaveConfig.TriggerFilter = 0; + if (HAL_TIM_SlaveConfigSynchronization(&htim1, &sSlaveConfig) != HAL_OK) + { + Error_Handler(); + } + sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK) @@ -228,21 +259,6 @@ static void MX_USART2_UART_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_Channel2_IRQn interrupt configuration */ - HAL_NVIC_SetPriority(DMA1_Channel2_IRQn, 0, 0); - HAL_NVIC_EnableIRQ(DMA1_Channel2_IRQn); - -} - /** Configure pins as * Analog * Input @@ -288,6 +304,7 @@ void Error_Handler(void) void assert_failed(uint8_t* file, uint32_t line) { /* USER CODE BEGIN 6 */ + halt(); /* User can add his own implementation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* USER CODE END 6 */ diff --git a/bsp/radio-controller-1/Src/stm32f1xx_hal_msp.c b/bsp/radio-controller-1/Src/stm32f1xx_hal_msp.c index 0b02774..5ee7f9a 100644 --- a/bsp/radio-controller-1/Src/stm32f1xx_hal_msp.c +++ b/bsp/radio-controller-1/Src/stm32f1xx_hal_msp.c @@ -44,8 +44,6 @@ /* Includes ------------------------------------------------------------------*/ #include "stm32f1xx_hal.h" -extern DMA_HandleTypeDef hdma_tim1_ch1; - extern void Error_Handler(void); /* USER CODE BEGIN 0 */ @@ -88,11 +86,11 @@ void HAL_MspInit(void) /* USER CODE END MspInit 1 */ } -void HAL_TIM_IC_MspInit(TIM_HandleTypeDef* htim_ic) +void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base) { GPIO_InitTypeDef GPIO_InitStruct; - if(htim_ic->Instance==TIM1) + if(htim_base->Instance==TIM1) { /* USER CODE BEGIN TIM1_MspInit 0 */ @@ -108,23 +106,6 @@ void HAL_TIM_IC_MspInit(TIM_HandleTypeDef* htim_ic) GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(RADIO_RX_GPIO_Port, &GPIO_InitStruct); - /* Peripheral DMA init*/ - - hdma_tim1_ch1.Instance = DMA1_Channel2; - hdma_tim1_ch1.Init.Direction = DMA_PERIPH_TO_MEMORY; - hdma_tim1_ch1.Init.PeriphInc = DMA_PINC_DISABLE; - hdma_tim1_ch1.Init.MemInc = DMA_MINC_ENABLE; - hdma_tim1_ch1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; - hdma_tim1_ch1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; - hdma_tim1_ch1.Init.Mode = DMA_NORMAL; - hdma_tim1_ch1.Init.Priority = DMA_PRIORITY_LOW; - if (HAL_DMA_Init(&hdma_tim1_ch1) != HAL_OK) - { - Error_Handler(); - } - - __HAL_LINKDMA(htim_ic,hdma[TIM_DMA_ID_CC1],hdma_tim1_ch1); - /* Peripheral interrupt init */ HAL_NVIC_SetPriority(TIM1_TRG_COM_IRQn, 1, 0); HAL_NVIC_EnableIRQ(TIM1_TRG_COM_IRQn); @@ -137,10 +118,10 @@ void HAL_TIM_IC_MspInit(TIM_HandleTypeDef* htim_ic) } -void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef* htim_ic) +void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base) { - if(htim_ic->Instance==TIM1) + if(htim_base->Instance==TIM1) { /* USER CODE BEGIN TIM1_MspDeInit 0 */ @@ -153,9 +134,6 @@ void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef* htim_ic) */ HAL_GPIO_DeInit(RADIO_RX_GPIO_Port, RADIO_RX_Pin); - /* Peripheral DMA DeInit*/ - HAL_DMA_DeInit(htim_ic->hdma[TIM_DMA_ID_CC1]); - /* Peripheral interrupt DeInit*/ HAL_NVIC_DisableIRQ(TIM1_TRG_COM_IRQn); diff --git a/bsp/radio-controller-1/Src/stm32f1xx_it.c b/bsp/radio-controller-1/Src/stm32f1xx_it.c index 8064fb8..67cbc69 100644 --- a/bsp/radio-controller-1/Src/stm32f1xx_it.c +++ b/bsp/radio-controller-1/Src/stm32f1xx_it.c @@ -41,7 +41,6 @@ /* External variables --------------------------------------------------------*/ extern PCD_HandleTypeDef hpcd_USB_FS; -extern DMA_HandleTypeDef hdma_tim1_ch1; extern TIM_HandleTypeDef htim1; /******************************************************************************/ @@ -186,20 +185,6 @@ void SysTick_Handler(void) /* please refer to the startup file (startup_stm32f1xx.s). */ /******************************************************************************/ -/** -* @brief This function handles DMA1 channel2 global interrupt. -*/ -void DMA1_Channel2_IRQHandler(void) -{ - /* USER CODE BEGIN DMA1_Channel2_IRQn 0 */ - - /* USER CODE END DMA1_Channel2_IRQn 0 */ - HAL_DMA_IRQHandler(&hdma_tim1_ch1); - /* USER CODE BEGIN DMA1_Channel2_IRQn 1 */ - - /* USER CODE END DMA1_Channel2_IRQn 1 */ -} - /** * @brief This function handles USB high priority or CAN TX interrupts. */ @@ -234,6 +219,7 @@ void USB_LP_CAN1_RX0_IRQHandler(void) void TIM1_TRG_COM_IRQHandler(void) { /* USER CODE BEGIN TIM1_TRG_COM_IRQn 0 */ + /* USER CODE END TIM1_TRG_COM_IRQn 0 */ HAL_TIM_IRQHandler(&htim1); /* USER CODE BEGIN TIM1_TRG_COM_IRQn 1 */ @@ -247,6 +233,7 @@ void TIM1_TRG_COM_IRQHandler(void) void TIM1_CC_IRQHandler(void) { /* USER CODE BEGIN TIM1_CC_IRQn 0 */ + /* USER CODE END TIM1_CC_IRQn 0 */ HAL_TIM_IRQHandler(&htim1); /* USER CODE BEGIN TIM1_CC_IRQn 1 */ -- cgit v1.2.3