STM32 TIM重映射
| 复用功能 | 没有重映射 | 部分重映射 | 完全重映射 |
| TIM3_CH1 | PA6 | PB4 | PC6 |
| CH2 | PA7 | PB5 | PC7 |
| CH3 | PB0 | PB0 | PC8 |
| CH4 | PB1 | PB1 | PC9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | /**重映射 tim3 使得PC7 PC8输出Pwm波 ****************************************************************************** * @file Project/Template/main.c * @author MCD Application Team * @version V3.0.0 * @date 04/06/2009 * @brief Main program body ****************************************************************************** * @copy * * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * * */ /* Includes ------------------------------------------------------------------*/ #include "stm32f10x.h" #include "stm32f10x_tim.h" #include "misc.h" voidGPIO_AFIODeInit(void);//这个函数不能落下,否则不能成功 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;//配置PWM需要使用的结构体声名 TIM_OCInitTypeDef TIM_OCInitStructure; u16 CCR3_Val =250; u16 CCR4_Val =250; voidGPIO_Config(void); voidTimer_Config(void); /** * @brief Delay program. * @param None * @retval : None */ voidDelay (u32 nCount) { for(; nCount != 0; nCount--); } /** * @brief Main program. * @param None * @retval : None */ intmain(void) { /* Setup STM32 system (clock, PLL and Flash configuration) */ SystemInit(); GPIO_Config(); Timer_Config(); /* Infinite loop */ while(1) { } } /** * @brief GPIO_Config program. * @param None * @retval : None */ voidGPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC |RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE); GPIO_AFIODeInit();//刚开始没有这个语句,所以一直没有重映射成功 GPIO_PinRemapConfig(GPIO_FullRemap_TIM3 , ENABLE);//这个就是重映射功能函数 /*GPIOA Configuration: TIM3 channel 3 and 4 as alternate function push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//这里也要注意 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure);//这四句是为了校验究竟PB0,PB1是否还有PWM输出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); } voidTimer_Config(void) { RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); TIM_DeInit(TIM3); TIM_TimeBaseStructure.TIM_Period = 999;//在下一个更新事件装入活动的自动重装载寄存器周期的值 TIM_TimeBaseStructure.TIM_Prescaler = 0;// 设置了用来作为 TIMx 时钟频率除数的预分频值 TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); /* PWM1 Mode configuration: Channel3 */ TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//TIM_OCMode TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = CCR3_Val;//设置了待装入捕获比较寄存器的值 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;//TIM_OCPolarity :TIM |
STM32TIM重映 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)
