STM32的引腳可設置為可設置為:普通IO功能、復用功能、重映射功能。普通IO功能、復用功能用得比較多,這里就不敘述了。重映射功能,用的場合相對而言要少點。因為實在用定時器時在用到重映象,所以以F103的TIM3輸出PWM波為例。
這是TIM3的復用功能映象表,可以看到沒有重映象時TIM3的四個通道所對應的引腳為PA6、PA7、PB0、PB1;使用部分重映象時為PB4、PB5、PB0、PB1,因為只改變了部分引腳,所以叫部分重映象;使用完全重映象時為PC6、PC7、PC8、PC9,這全部的引腳都改了,所以叫完全重映象。
我這里要把TIM3_CH1、TIM3_CH1重映象到PC6、PC7。就要用到函數(shù)
GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE);
這個函數(shù)的參數(shù)GPIO_FullRemap_TIM3,是設置TIM3完全映射,當時沒注意選了GPIO_PartialRemap_TIM3,結果調了半天沒有波形輸出。一定要注意。
具體配置過程如下:
void TIM3_PWM_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;
TIM_OCInitTypeDefTIM_OCInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);//使能定時器3的時鐘
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);//使能外設時鐘使能
GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE);//TIM選擇全復用功能使能