你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32 ~ STM32 TIM重映射

[复制链接]
STMCU小助手 发布时间:2022-1-21 22:18
复用功能没有重映射部分重映射完全重映射
TIM3_CH1PA6PB4PC6
CH2PA7PB5PC7
CH3PB0PB0PC8
CH4PB1PB1PC9
  1. /**重映射 tim3 使得PC7 PC8输出Pwm波   
  2.   ******************************************************************************
  3.   * @file    Project/Template/main.c
  4.   * @author  MCD Application Team
  5.   * @version V3.0.0
  6.   * @date    04/06/2009
  7.   * @brief   Main program body
  8.   ******************************************************************************
  9.   * @copy
  10.   *
  11.   * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  12.   * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  13.   * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
  14.   * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  15.   * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  16.   * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  17.   *
  18.   * <h2><center>© COPYRIGHT 2009 STMicroelectronics</center></h2>
  19.   */
  20. /* Includes ------------------------------------------------------------------*/
  21. #include "stm32f10x.h"
  22. #include "stm32f10x_tim.h"
  23. #include "misc.h"
  24. void GPIO_AFIODeInit(void);//这个函数不能落下,否则不能成功
  25. TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;//配置PWM需要使用的结构体声名
  26. TIM_OCInitTypeDef          TIM_OCInitStructure;
  27. u16 CCR3_Val =250;
  28. u16 CCR4_Val =250;
  29.                
  30. void GPIO_Config(void);
  31. void Timer_Config(void);
  32. /**
  33.   * @brief  Delay program.
  34.   * @param  None
  35.   * @retval : None
  36.   */
  37. void  Delay (u32 nCount)
  38. {
  39.   for(; nCount != 0; nCount--);
  40. }
  41. /**
  42.   * @brief  Main program.
  43.   * @param  None
  44.   * @retval : None
  45.   */
  46. int main(void)
  47. {
  48. /* Setup STM32 system (clock, PLL and Flash configuration) */
  49. SystemInit();
  50. GPIO_Config();
  51. Timer_Config();
  52. /* Infinite loop */
  53. while (1) {
  54.                }
  55. }
  56. /**
  57.   * @brief  GPIO_Config program.
  58.   * @param  None
  59.   * @retval : None
  60.   */
  61. void GPIO_Config(void)
  62. {
  63.   GPIO_InitTypeDef GPIO_InitStructure;
  64.    
  65.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |            RCC_APB2Periph_GPIOC |RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE);

  66.    GPIO_AFIODeInit();  //刚开始没有这个语句,所以一直没有重映射成功
  67.    GPIO_PinRemapConfig(GPIO_FullRemap_TIM3 , ENABLE); //这个就是重映射功能函数
  68. /*GPIOA Configuration: TIM3 channel 3 and 4 as alternate function push-pull */
  69.   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_0 | GPIO_Pin_1;
  70.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //这里也要注意
  71.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  72.   GPIO_Init(GPIOB, &GPIO_InitStructure); //这四句是为了校验究竟PB0,PB1是否还有PWM输出
  73.   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_8 | GPIO_Pin_9;
  74.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  75.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  76.   GPIO_Init(GPIOC, &GPIO_InitStructure);
  77.    
  78.    
  79. }
  80. void Timer_Config(void)
  81. {
  82. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

  83.   TIM_DeInit(TIM3);
  84.   TIM_TimeBaseStructure.TIM_Period = 999;  //在下一个更新事件装入活动的自动重装载寄存器周期的值
  85.   TIM_TimeBaseStructure.TIM_Prescaler = 0; //  设置了用来作为 TIMx 时钟频率除数的预分频值
  86.   TIM_TimeBaseStructure.TIM_ClockDivision = 0;   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  87.   TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
  88.   /* PWM1 Mode configuration: Channel3 */
  89.   TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;  //TIM_OCMode
  90.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  91.   TIM_OCInitStructure.TIM_Pulse = CCR3_Val;      //设置了待装入捕获比较寄存器的值
  92.   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //TIM_OCPolarity :TIM 输出比较极性高
  93.   TIM_OC3Init(TIM3, &TIM_OCInitStructure);
  94.   TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);  //使能或者失能 TIM3 在 CCR3 上的预装载寄存器
  95.   /* PWM1 Mode configuration: Channel4 */
  96.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  97.   TIM_OCInitStructure.TIM_Pulse = CCR4_Val;
  98.   TIM_OC4Init(TIM3, &TIM_OCInitStructure);
  99.   TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable);
  100.   /* TIM3 enable counter */
  101.   TIM_Cmd(TIM3, ENABLE);          //开启时钟,别落下
  102. }
  103. /**
  104.   * @brief  EXTI_Config Program.
  105.   * @param  None
  106.   * @retval : None
  107.   */

  108. /**
  109.   * @brief  Configures the nested vectored interrupt controller.
  110.   * @param  None
  111.   * @retval : None
  112.   */

  113. #ifdef  USE_FULL_ASSERT
  114. /**
  115.   * @brief  Reports the name of the source file and the source line number
  116.   *   where the assert_param error has occurred.
  117.   * @param file: pointer to the source file name
  118.   * @param line: assert_param error line source number
  119.   * @retval : None
  120.   */
  121. void assert_failed(uint8_t* file, uint32_t line)
  122. {
  123.   /* User can add his own implementation to report the file name and line number,
  124.      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  125.   /* Infinite loop */
  126.   while (1)
  127.   {
  128.   }
  129. }
  130. #endif
  131. /**
  132.   * @}
  133.   */

  134. /******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/
复制代码

收藏 评论0 发布时间:2022-1-21 22:18

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版