Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Src/tim.c@2:d45b3a0f19a2, 2017-09-02 (annotated)
- Committer:
- y2kb
- Date:
- Sat Sep 02 06:56:21 2017 +0000
- Revision:
- 2:d45b3a0f19a2
- Parent:
- 0:dffe3a22587d
Reduce CPU clock dependent part so that it can correspond to various boards
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| y2kb | 0:dffe3a22587d | 1 | /** |
| y2kb | 0:dffe3a22587d | 2 | ****************************************************************************** |
| y2kb | 0:dffe3a22587d | 3 | * File Name : TIM.c |
| y2kb | 0:dffe3a22587d | 4 | * Description : This file provides code for the configuration |
| y2kb | 0:dffe3a22587d | 5 | * of the TIM instances. |
| y2kb | 0:dffe3a22587d | 6 | ****************************************************************************** |
| y2kb | 0:dffe3a22587d | 7 | * This notice applies to any and all portions of this file |
| y2kb | 0:dffe3a22587d | 8 | * that are not between comment pairs USER CODE BEGIN and |
| y2kb | 0:dffe3a22587d | 9 | * USER CODE END. Other portions of this file, whether |
| y2kb | 0:dffe3a22587d | 10 | * inserted by the user or by software development tools |
| y2kb | 0:dffe3a22587d | 11 | * are owned by their respective copyright owners. |
| y2kb | 0:dffe3a22587d | 12 | * |
| y2kb | 0:dffe3a22587d | 13 | * Copyright (c) 2017 STMicroelectronics International N.V. |
| y2kb | 0:dffe3a22587d | 14 | * All rights reserved. |
| y2kb | 0:dffe3a22587d | 15 | * |
| y2kb | 0:dffe3a22587d | 16 | * Redistribution and use in source and binary forms, with or without |
| y2kb | 0:dffe3a22587d | 17 | * modification, are permitted, provided that the following conditions are met: |
| y2kb | 0:dffe3a22587d | 18 | * |
| y2kb | 0:dffe3a22587d | 19 | * 1. Redistribution of source code must retain the above copyright notice, |
| y2kb | 0:dffe3a22587d | 20 | * this list of conditions and the following disclaimer. |
| y2kb | 0:dffe3a22587d | 21 | * 2. Redistributions in binary form must reproduce the above copyright notice, |
| y2kb | 0:dffe3a22587d | 22 | * this list of conditions and the following disclaimer in the documentation |
| y2kb | 0:dffe3a22587d | 23 | * and/or other materials provided with the distribution. |
| y2kb | 0:dffe3a22587d | 24 | * 3. Neither the name of STMicroelectronics nor the names of other |
| y2kb | 0:dffe3a22587d | 25 | * contributors to this software may be used to endorse or promote products |
| y2kb | 0:dffe3a22587d | 26 | * derived from this software without specific written permission. |
| y2kb | 0:dffe3a22587d | 27 | * 4. This software, including modifications and/or derivative works of this |
| y2kb | 0:dffe3a22587d | 28 | * software, must execute solely and exclusively on microcontroller or |
| y2kb | 0:dffe3a22587d | 29 | * microprocessor devices manufactured by or for STMicroelectronics. |
| y2kb | 0:dffe3a22587d | 30 | * 5. Redistribution and use of this software other than as permitted under |
| y2kb | 0:dffe3a22587d | 31 | * this license is void and will automatically terminate your rights under |
| y2kb | 0:dffe3a22587d | 32 | * this license. |
| y2kb | 0:dffe3a22587d | 33 | * |
| y2kb | 0:dffe3a22587d | 34 | * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS" |
| y2kb | 0:dffe3a22587d | 35 | * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT |
| y2kb | 0:dffe3a22587d | 36 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A |
| y2kb | 0:dffe3a22587d | 37 | * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY |
| y2kb | 0:dffe3a22587d | 38 | * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT |
| y2kb | 0:dffe3a22587d | 39 | * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
| y2kb | 0:dffe3a22587d | 40 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| y2kb | 0:dffe3a22587d | 41 | * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, |
| y2kb | 0:dffe3a22587d | 42 | * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
| y2kb | 0:dffe3a22587d | 43 | * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
| y2kb | 0:dffe3a22587d | 44 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, |
| y2kb | 0:dffe3a22587d | 45 | * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| y2kb | 0:dffe3a22587d | 46 | * |
| y2kb | 0:dffe3a22587d | 47 | ****************************************************************************** |
| y2kb | 0:dffe3a22587d | 48 | */ |
| y2kb | 0:dffe3a22587d | 49 | |
| y2kb | 0:dffe3a22587d | 50 | /* Includes ------------------------------------------------------------------*/ |
| y2kb | 0:dffe3a22587d | 51 | #include "tim.h" |
| y2kb | 0:dffe3a22587d | 52 | |
| y2kb | 0:dffe3a22587d | 53 | /* USER CODE BEGIN 0 */ |
| y2kb | 0:dffe3a22587d | 54 | /* USER CODE END 0 */ |
| y2kb | 0:dffe3a22587d | 55 | |
| y2kb | 0:dffe3a22587d | 56 | TIM_HandleTypeDef htim3; |
| y2kb | 0:dffe3a22587d | 57 | |
| y2kb | 0:dffe3a22587d | 58 | /* TIM3 init function */ |
| y2kb | 0:dffe3a22587d | 59 | void MX_TIM3_Init(void) |
| y2kb | 0:dffe3a22587d | 60 | { |
| y2kb | 0:dffe3a22587d | 61 | TIM_MasterConfigTypeDef sMasterConfig; |
| y2kb | 0:dffe3a22587d | 62 | TIM_OC_InitTypeDef sConfigOC; |
| y2kb | 0:dffe3a22587d | 63 | |
| y2kb | 0:dffe3a22587d | 64 | htim3.Instance = TIM3; |
| y2kb | 0:dffe3a22587d | 65 | htim3.Init.Prescaler = 0; |
| y2kb | 0:dffe3a22587d | 66 | htim3.Init.CounterMode = TIM_COUNTERMODE_UP; |
| y2kb | 2:d45b3a0f19a2 | 67 | htim3.Init.Period = TIM_CLOCK_SOURCE_HZ / 20000 - 1; |
| y2kb | 0:dffe3a22587d | 68 | htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; |
| y2kb | 0:dffe3a22587d | 69 | if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) |
| y2kb | 0:dffe3a22587d | 70 | { |
| y2kb | 0:dffe3a22587d | 71 | _Error_Handler(__FILE__, __LINE__); |
| y2kb | 0:dffe3a22587d | 72 | } |
| y2kb | 0:dffe3a22587d | 73 | |
| y2kb | 0:dffe3a22587d | 74 | sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE; |
| y2kb | 0:dffe3a22587d | 75 | sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; |
| y2kb | 0:dffe3a22587d | 76 | if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) |
| y2kb | 0:dffe3a22587d | 77 | { |
| y2kb | 0:dffe3a22587d | 78 | _Error_Handler(__FILE__, __LINE__); |
| y2kb | 0:dffe3a22587d | 79 | } |
| y2kb | 0:dffe3a22587d | 80 | |
| y2kb | 0:dffe3a22587d | 81 | sConfigOC.OCMode = TIM_OCMODE_PWM1; |
| y2kb | 0:dffe3a22587d | 82 | sConfigOC.Pulse = 0; |
| y2kb | 0:dffe3a22587d | 83 | sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; |
| y2kb | 0:dffe3a22587d | 84 | sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; |
| y2kb | 0:dffe3a22587d | 85 | if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_2) != HAL_OK) |
| y2kb | 0:dffe3a22587d | 86 | { |
| y2kb | 0:dffe3a22587d | 87 | _Error_Handler(__FILE__, __LINE__); |
| y2kb | 0:dffe3a22587d | 88 | } |
| y2kb | 0:dffe3a22587d | 89 | |
| y2kb | 0:dffe3a22587d | 90 | HAL_TIM_MspPostInit(&htim3); |
| y2kb | 0:dffe3a22587d | 91 | |
| y2kb | 0:dffe3a22587d | 92 | } |
| y2kb | 0:dffe3a22587d | 93 | |
| y2kb | 0:dffe3a22587d | 94 | void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef* tim_pwmHandle) |
| y2kb | 0:dffe3a22587d | 95 | { |
| y2kb | 0:dffe3a22587d | 96 | |
| y2kb | 0:dffe3a22587d | 97 | if(tim_pwmHandle->Instance==TIM3) |
| y2kb | 0:dffe3a22587d | 98 | { |
| y2kb | 0:dffe3a22587d | 99 | /* USER CODE BEGIN TIM3_MspInit 0 */ |
| y2kb | 0:dffe3a22587d | 100 | |
| y2kb | 0:dffe3a22587d | 101 | /* USER CODE END TIM3_MspInit 0 */ |
| y2kb | 0:dffe3a22587d | 102 | /* TIM3 clock enable */ |
| y2kb | 0:dffe3a22587d | 103 | __HAL_RCC_TIM3_CLK_ENABLE(); |
| y2kb | 0:dffe3a22587d | 104 | /* USER CODE BEGIN TIM3_MspInit 1 */ |
| y2kb | 0:dffe3a22587d | 105 | |
| y2kb | 0:dffe3a22587d | 106 | /* USER CODE END TIM3_MspInit 1 */ |
| y2kb | 0:dffe3a22587d | 107 | } |
| y2kb | 0:dffe3a22587d | 108 | } |
| y2kb | 0:dffe3a22587d | 109 | void HAL_TIM_MspPostInit(TIM_HandleTypeDef* timHandle) |
| y2kb | 0:dffe3a22587d | 110 | { |
| y2kb | 0:dffe3a22587d | 111 | |
| y2kb | 0:dffe3a22587d | 112 | GPIO_InitTypeDef GPIO_InitStruct; |
| y2kb | 0:dffe3a22587d | 113 | if(timHandle->Instance==TIM3) |
| y2kb | 0:dffe3a22587d | 114 | { |
| y2kb | 0:dffe3a22587d | 115 | /* USER CODE BEGIN TIM3_MspPostInit 0 */ |
| y2kb | 0:dffe3a22587d | 116 | |
| y2kb | 0:dffe3a22587d | 117 | /* USER CODE END TIM3_MspPostInit 0 */ |
| y2kb | 0:dffe3a22587d | 118 | |
| y2kb | 0:dffe3a22587d | 119 | /**TIM3 GPIO Configuration |
| y2kb | 0:dffe3a22587d | 120 | PC7 ------> TIM3_CH2 |
| y2kb | 0:dffe3a22587d | 121 | */ |
| y2kb | 0:dffe3a22587d | 122 | GPIO_InitStruct.Pin = PWM_Pin; |
| y2kb | 0:dffe3a22587d | 123 | GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; |
| y2kb | 0:dffe3a22587d | 124 | GPIO_InitStruct.Pull = GPIO_NOPULL; |
| y2kb | 0:dffe3a22587d | 125 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; |
| y2kb | 0:dffe3a22587d | 126 | GPIO_InitStruct.Alternate = GPIO_AF2_TIM3; |
| y2kb | 0:dffe3a22587d | 127 | HAL_GPIO_Init(PWM_GPIO_Port, &GPIO_InitStruct); |
| y2kb | 0:dffe3a22587d | 128 | |
| y2kb | 0:dffe3a22587d | 129 | /* USER CODE BEGIN TIM3_MspPostInit 1 */ |
| y2kb | 0:dffe3a22587d | 130 | |
| y2kb | 0:dffe3a22587d | 131 | /* USER CODE END TIM3_MspPostInit 1 */ |
| y2kb | 0:dffe3a22587d | 132 | } |
| y2kb | 0:dffe3a22587d | 133 | |
| y2kb | 0:dffe3a22587d | 134 | } |
| y2kb | 0:dffe3a22587d | 135 | |
| y2kb | 0:dffe3a22587d | 136 | void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef* tim_pwmHandle) |
| y2kb | 0:dffe3a22587d | 137 | { |
| y2kb | 0:dffe3a22587d | 138 | |
| y2kb | 0:dffe3a22587d | 139 | if(tim_pwmHandle->Instance==TIM3) |
| y2kb | 0:dffe3a22587d | 140 | { |
| y2kb | 0:dffe3a22587d | 141 | /* USER CODE BEGIN TIM3_MspDeInit 0 */ |
| y2kb | 0:dffe3a22587d | 142 | |
| y2kb | 0:dffe3a22587d | 143 | /* USER CODE END TIM3_MspDeInit 0 */ |
| y2kb | 0:dffe3a22587d | 144 | /* Peripheral clock disable */ |
| y2kb | 0:dffe3a22587d | 145 | __HAL_RCC_TIM3_CLK_DISABLE(); |
| y2kb | 0:dffe3a22587d | 146 | /* USER CODE BEGIN TIM3_MspDeInit 1 */ |
| y2kb | 0:dffe3a22587d | 147 | |
| y2kb | 0:dffe3a22587d | 148 | /* USER CODE END TIM3_MspDeInit 1 */ |
| y2kb | 0:dffe3a22587d | 149 | } |
| y2kb | 0:dffe3a22587d | 150 | } |
| y2kb | 0:dffe3a22587d | 151 | |
| y2kb | 0:dffe3a22587d | 152 | /* USER CODE BEGIN 1 */ |
| y2kb | 0:dffe3a22587d | 153 | |
| y2kb | 0:dffe3a22587d | 154 | /* USER CODE END 1 */ |
| y2kb | 0:dffe3a22587d | 155 | |
| y2kb | 0:dffe3a22587d | 156 | /** |
| y2kb | 0:dffe3a22587d | 157 | * @} |
| y2kb | 0:dffe3a22587d | 158 | */ |
| y2kb | 0:dffe3a22587d | 159 | |
| y2kb | 0:dffe3a22587d | 160 | /** |
| y2kb | 0:dffe3a22587d | 161 | * @} |
| y2kb | 0:dffe3a22587d | 162 | */ |
| y2kb | 0:dffe3a22587d | 163 | |
| y2kb | 0:dffe3a22587d | 164 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |