代码如下,能跑不报错,但是检测PA6引脚没有pwm波
#include "stm32f10x.h" // Device header
#define Pout(n) *(volatile uint32_t *)(0x42000000+(uint32_t)(&GPIOC->ODR-0X40000000)*32+4*n)
void GPIO_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6
;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP
;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz
;GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE); //引脚复用的两种模式,FULL全复用,Partial为部分复用
}
void tim_init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;//比较参数结构体
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
TIM_TimeBaseStructure.TIM_Period = 500;
TIM_TimeBaseStructure.TIM_Prescaler = 72-1;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;//两种模式1为小于有效,2为小于无效
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse = 250;//比较数值
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;//输出极性
TIM_OC1Init(TIM3, &TIM_OCInitStructure);
TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);
TIM_Cmd(TIM3,ENABLE);
}
int main()
{
GPIO_init();
tim_init();
for(;;)
{
}
}
;GPIO_Init(GPIOA,&GPIO_InitStructure);//这里初始化GPIOA, 因为你是PA6输出
void GPIO_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6
;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP
;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz
;GPIO_Init(GPIOA,&GPIO_InitStructure);//这里初始化GPIOA, 因为你是PA6输出
GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE); //引脚复用的两种模式,FULL全复用,Partial为部分复用
}
GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE); //引脚复用的两种模式,FULL全复用,Partial为部分复用
这一句不需要,TIM3的四个通道分别是PA6 PA7 PB0 PB1
你这句是在映射,但你又没用映射接口,这不是多此一举嘛
这一句注释是有误的
pinremap是重映射,意思是将这个端口的功能映射到其他端口,不是复用!不是复用!不是复用!