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****/ |