stm32管脚重映射

一、问题描述

  最近做了一块板子,功能可以理解成输出pwm波。

程序在实验板(型号rct6)上没有问题,可是在我做的板子上就有问题了,输出不了波形,我做的板子是(r8t6型号的片子)。

二、发现问题

发现问题是很sb的,没有注意这两个片子的差异。

我rct6输出pwm用的定时器是TIM8的ch2、ch3这两路,也就是PC7、PC8管脚。

但是呢,新做的板子r8t6根本没有定时器8,只有定时器1、2、3、4。累死也输出不出来波形啊!

三、解决问题

那咋办,板子已经做好了,仔细看r8t6片子的说明文档,有了新奇的发现。

 其实这俩片子封装都是一样的,焊在电路板上管脚看不出啥区别。

但是从R8T6芯片手册可以看出来能用R8T6的TIM3    代替     RCT6的TIM8。

怎样替换呢?

从芯片资料可以看出,r8t6的TIM3也用到了PC7、PC8。只不过是被Remap上去的,就是我们所说的映射。

 如下图所示:

stm32管脚重映射_第1张图片

原来默认TIM3的四个通道对应的管脚是PA6,PA7,PB1,PB0

stm32管脚重映射_第2张图片

四、如何实现映射呢

经过查资料,主要映射有四步,这四步的顺序不能错了,顺序很重要。

//板子不同,要对管脚映射
     //1.使能重映射后用到的GPIO的时钟;
     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);  //使能GPIO外设时钟使能
    //2.使能功能外设时钟;就是用到哪个定时器,使能哪个功能外设时钟。注意APB2时钟对应的也有定时器。
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);// 
    //3.使能AFIO时钟;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
    //4.开启重映射;
    GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE);   

顺序很重要啊

你可能感兴趣的:(笔记,stm32,单片机,arm)